Operácie

Bluetooth Wolverine claws: Rozdiel medzi revíziami

Z SensorWiki

Riadok 77: Riadok 77:
 
=== Algoritmus a program ===
 
=== Algoritmus a program ===
  
Uveďte stručný popis algoritmu, v akom jazyku a verzii vývojového prostredia ste ho vytvorili.
+
<source lang="c">
Je vhodné nakresliť aspoň hrubú štruktúru programu napríklad vo forme vývojového diagramu.  
+
void setup()
Rozsiahly program pre lepšiu prehľadnosť rozdeľte do viacerých súborov.
+
{
 +
  pinMode(enB, OUTPUT);
 +
  pinMode(in3, OUTPUT);
 +
  pinMode(in4, OUTPUT);
 +
  Serial.begin(9600);        //Nastavenie data rateu v bitoch za sekundu (baud) pre sériový prenos dát
  
Vyberte podstatné časti zdrojového kódu, použite na to prostredie ''source'':
+
void eject()
 +
{
 +
  analogWrite(enB, 255);
 +
  // Nastavenie rýchlosti motorčeka na 255 z možných 0~255
 +
  digitalWrite(in3, HIGH);
 +
  digitalWrite(in4, LOW);
 +
  delay(1000);
 +
  // now turn off motors
 +
  digitalWrite(in3, LOW);
 +
  digitalWrite(in4, LOW);
 +
}
  
<source lang="c">
+
void back(){
/* A nezabudnite zdroják hojne komentovať  */
+
  analogWrite(enB, 255);
 
+
  // Nastavenie rýchlosti motorčeka na 255 z možných 0~255
int main(void) {
+
  digitalWrite(in3, LOW);
      
+
  digitalWrite(in4, HIGH);
     printf("Hello, World!\n");
+
  delay(1000);
     return(0);
+
  // now turn off motors
 +
  digitalWrite(in3, LOW);
 +
  digitalWrite(in4, LOW);
 +
}
 +
 +
void loop()
 +
{
 +
  if(Serial.available() > 0) 
 +
  {
 +
     Incoming_value = Serial.read();      //Čítanie dát z telefónu
 +
    Serial.print(Incoming_value);        //Výpis do serial monitoru
 +
     Serial.print("\n");                
 +
     if(Incoming_value == 'a'){          //Pri získaní vstupu "a" z telefónu sa striedavo vykonávajú funkcie eject() a back()
 +
      if(count % 2 != 0){
 +
        eject();
 +
      }
 +
      else{
 +
        back();
 +
      }
 +
      count++;
 +
    }
 +
  }
 
}
 
}
 
</source>
 
</source>
  
Nezabudnite však nahrať aj kompletné zdrojové kódy vášho programu!
+
Zdrojový kód: [[Médiá:ClawKod.c|clawKod.c]]
 
 
Zdrojový kód: [[Médiá:Serial.h|serial.h]] a [[Médiá:Pip.c|main.c]]
 
 
 
[[Médiá:MojProgram.c|program.c]]
 
  
  
 
=== Výsledok ===
 
=== Výsledok ===
  
Nezabudnite zdokumentovať výsledok vašej práce. Určite sem patria fotografie, video
+
Ukážka výsledného produktu na platenom modelovi:
a zhodnotenie ako ste spokojní s výsledkom,
+
[[Súbor:RudSample.mp4|center|900px]]
 +
[[Súbor:ClawFinal.jpg|center|900px]]
  
Kľúčové slová 'Category', ktoré na konci stránky nemeňte.
+
S celkovým výsledkom som celkom spokojný, aj keď sme museli privrieť oči pri veľa nedostatkoch ktoré vznikali počas procesu tvorby, ako napríklad nedoliehanie ozubeného kolieska na koľajničku, taktiež ich rozdielne veľkosti. Sú to problémy, ktoré by sa dali odstrániť jednoduchým znovavytlačením niektorých dielov, no kvôli časovej tiesni (ktorej predchádzala prokrastinácia) sme to nestíhali. Každopádne, to vyzeralo skoro ako podľa mojich počiatočných predstáv a to je to, pre čo sa to oplatí robiť. Pocit z vytvorenia funkčného produktu podľa počiatočnej predstavy od základov.
  
  
 
[[Category:DTV2019]]
 
[[Category:DTV2019]]

Verzia zo dňa a času 01:30, 11. jún 2019

Autor: Martin Hrebeňák, Filip Furtkevič
Študijný odbor: Aplikovaná informatika 3. Bc. (2019)

Opis projektu

Cieľom projektu, bolo vytvoriť automaticky vysúvané Wolverinove pazúry.
Pôvodný plán bolo ovládanie pazúrov pomocou čerelnky Mindwave Mobile. Z tohto plánu však vzišlo z dôvodu chorobnej lenivosti a následnej časovej tiesni autorov, a tak su pazúry ovládané telefónom, pomocou technológie bluetooth.


Prečo?

  • Nápad je naším srdciam blízky
  • Marvel tématika hýbe dnešným svetom
  • Wolverine je cool

Čo potrebujeme?

  • Arduino nano
  • 6xAA batéria
  • Holder pre 6 AA batérií
  • l298n motor driver
  • HC-05 bluetooth module
  • kábliky
  • 3D tlačiareň

Ako?

  • Najprv sme si rozplánovali princíp vysúvania pazúrov. Pôvodný plán bol pripevniť na motorček, ktorý by poháňal závitnicovú tyč.
Snímkad.PNG


Následne sme však, kvôli rýchlosti presedlali na nápad s ozubeným kolieskom a koľajničkou.

  • Základ bol vymodelovať všetky komponenty. Na modelovanie sme používali začiatočnícky prehliadačový program Tinkercad. Schránka pazúrov sa zväčšovala s pribúdajúcimi komponentami, a taktiež s nápadom, že motorček s ozubeným kolesom bude prilepený o spodnu stranu strednej časti schránky, na druhej strane ktorej budú pazúry s koľajničkou.

Použité modely: Médiá:Case1.stl Médiá:Case2.stl Médiá:Case3.stl Médiá:Claws.stl Médiá:Pinion.stl

  • Ďalšie v poradí je správne zapojenie jednotlivých komponentov ako na obrázku (alebo krajšie), podľa nákresu nižšie:
ClawScheme.jpg

Analýza

V tejto časti popíšete ako idete daný problém riešiť. Uvediete sem aj všetky potrebné technické údaje, ktoré sú potrebné na úspešné vyriešenie projektu. Napríklad:

  • popis komunikačnej zbernice (i2c, 1-wire, RS-232 a pod.)
  • obrázok zapojenia vývodov použitej súčiastky
  • odkaz na katalógový list
  • priebehy dôležitých signálov
  • este jedna polozka


Popis riešenia

Sem opíšete ako konkrétne ste problém vyriešili. Začnite popisom pripojenia k procesoru (nezabudnite na schému zapojenia!) a zdôraznite ktoré jeho periférie ste pritom využili.

Schéma zapojenia snímača Zapojenie.png

Súbor:Example.jpg

Pozn.: Názov obrázku musí byť jedinečný, uvedomte si, že Obr1.jpg už pred vami skúsilo nahrať už aspoň 10 študentov.

MojObrazok.jpg

Algoritmus a program

void setup()
{
  pinMode(enB, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  Serial.begin(9600);         //Nastavenie data rateu v bitoch za sekundu (baud) pre sériový prenos dát

void eject()
{
  analogWrite(enB, 255);
  // Nastavenie rýchlosti motorčeka na 255 z možných 0~255
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  delay(1000);
  // now turn off motors
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

void back(){
  analogWrite(enB, 255);
  // Nastavenie rýchlosti motorčeka na 255 z možných 0~255
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  delay(1000);
  // now turn off motors
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW); 
}
 
void loop()
{
  if(Serial.available() > 0)  
  {
    Incoming_value = Serial.read();      //Čítanie dát z telefónu
    Serial.print(Incoming_value);        //Výpis do serial monitoru
    Serial.print("\n");                  
    if(Incoming_value == 'a'){           //Pri získaní vstupu "a" z telefónu sa striedavo vykonávajú funkcie eject() a back()
      if(count % 2 != 0){
        eject();
      }
      else{
        back();
      }
      count++;
    }
  }
}

Zdrojový kód: clawKod.c


Výsledok

Ukážka výsledného produktu na platenom modelovi: Súbor:RudSample.mp4

ClawFinal.jpg

S celkovým výsledkom som celkom spokojný, aj keď sme museli privrieť oči pri veľa nedostatkoch ktoré vznikali počas procesu tvorby, ako napríklad nedoliehanie ozubeného kolieska na koľajničku, taktiež ich rozdielne veľkosti. Sú to problémy, ktoré by sa dali odstrániť jednoduchým znovavytlačením niektorých dielov, no kvôli časovej tiesni (ktorej predchádzala prokrastinácia) sme to nestíhali. Každopádne, to vyzeralo skoro ako podľa mojich počiatočných predstáv a to je to, pre čo sa to oplatí robiť. Pocit z vytvorenia funkčného produktu podľa počiatočnej predstavy od základov.