AplTVY3-B3-1sk-4T

Z MediaWiki SPŠ a VOŠ Písek
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(jel v před a pokud čidlo ultrazvuku zjistí překážku se zastavil, kousek zacouval, otočil se o 160° a celý cyklus pokračoval)
 
(Není zobrazeno 15 mezilehlých verzí od 3 uživatelů.)
Řádka 1: Řádka 1:
 
HW: [[Arduino]] realizace: Maxa David Charvát Jakub Lukáš Jílek
 
HW: [[Arduino]] realizace: Maxa David Charvát Jakub Lukáš Jílek
                         
+
 
 +
[[Soubor:Arduino.jpg|thumb|Robot [[Arduino]]]]                         
 
                            
 
                            
  
Řádka 7: Řádka 8:
 
* Sestavte robota, napište program a vyzkoušejte proto, aby robot:
 
* Sestavte robota, napište program a vyzkoušejte proto, aby robot:
  
 +
==se pohyboval vpřed do vzdálenosti 1m ==
  
 +
<source lang="Cpp">
 +
int motor_left[] = {6, 7}
 +
int motor_right[] = {8, 10}
  
 +
void setup() {
 +
Serial.begin(9600);
 +
int i;
 +
for(i = 0; i < 2; i++){
 +
pinMode(motor_left[i], OUTPUT);
 +
pinMode(motor_right[i], OUTPUT);
  
 +
drive_forward();
 +
delay(6200);
 +
motor_stop();
 +
Serial.println("1");
  
 +
}
 +
}
 +
 +
void loop() {
 +
 +
}
 +
 +
void motor_stop(){
 +
digitalWrite(motor_left[0], LOW);
 +
digitalWrite(motor_left[1], LOW);
 +
 +
digitalWrite(motor_right[0], LOW);
 +
digitalWrite(motor_right[1], LOW);
 +
}
 +
 +
void drive_forward(){
 +
digitalWrite(motor_left[0], HIGH);
 +
digitalWrite(motor_left[1], LOW);
 +
 +
digitalWrite(motor_right[0], HIGH);
 +
digitalWrite(motor_right[1], LOW);
 +
}
 +
 +
</source>
 +
 +
{{#widget:YouTube|id=1WMYtVgvqE8|Video jízdy vpřed|right}}
  
==se pohyboval vpřed do vzdálenosti 1m ==
 
 
==se pohyboval vpřed ve čtyřúhelníku o straně cca 0,5m ==
 
==se pohyboval vpřed ve čtyřúhelníku o straně cca 0,5m ==
 +
<source lang="Cpp">
 +
int motor_left[] = {6, 7};
 +
 +
int motor_right[] = {8, 10};
 +
void setup() {
 +
Serial.begin(9600);
 +
int i;
 +
for(i = 0; i < 2; i++){
 +
pinMode(motor_left[i], OUTPUT);
 +
pinMode(motor_right[i], OUTPUT);
 +
}
 +
}
 +
 +
void loop() {}
 +
 +
drive_forward();
 +
delay(3200);
 +
motor_stop();
 +
Serial.println("1");
 +
 +
turn_left();
 +
delay(420);
 +
motor_stop();
 +
Serial.println("3");
 +
 +
motor_stop();
 +
delay(1000);
 +
motor_stop();
 +
Serial.println("5");
 +
 +
}
 +
 +
 +
void motor_stop(){
 +
digitalWrite(motor_left[0], LOW);
 +
digitalWrite(motor_left[1], LOW);
 +
 +
digitalWrite(motor_right[0], LOW);
 +
digitalWrite(motor_right[1], LOW);
 +
delay(25);
 +
}
 +
 +
void drive_forward(){
 +
digitalWrite(motor_left[0], HIGH);
 +
digitalWrite(motor_left[1], LOW);
 +
 +
digitalWrite(motor_right[0], HIGH);
 +
digitalWrite(motor_right[1], LOW);
 +
}
 +
 +
void turn_left(){
 +
digitalWrite(motor_left[0], LOW);
 +
digitalWrite(motor_left[1], HIGH);
 +
digitalWrite(motor_right[0], HIGH);
 +
digitalWrite(motor_right[1], LOW);
 +
}
 +
</source>
 
==jel rovně a zastavil na 60 cm vzdáleném místě označeném černou lepící páskou ==
 
==jel rovně a zastavil na 60 cm vzdáleném místě označeném černou lepící páskou ==
 
==se pohyboval dokud nebude stisknutý dotykový senzor ==
 
==se pohyboval dokud nebude stisknutý dotykový senzor ==
 +
 +
<source lang="Cpp">
 +
 +
int analogPin = 1;    //nastavení vstupního pinu ze senzoru
 +
 +
int val = 0;          // hodnota, která přijde z analogového pinu
 +
 +
int motor_left[] = {6, 7};
 +
int motor_right[] = {8, 10};
 +
 +
void setup()
 +
{
 +
  Serial.begin(9600);       
 +
  int i;
 +
for(i = 0; i < 2; i++){
 +
pinMode(motor_left[i], OUTPUT);
 +
pinMode(motor_right[i], OUTPUT);
 +
}
 +
}
 +
 +
void loop()
 +
{
 +
  val = analogRead(analogPin);    // načtení vstupního pinu
 +
 +
if (val>600)                                                             
 +
  {
 +
  drive_forward();
 +
  delay(1000);
 +
  }
 +
  if (val <600)
 +
{
 +
motor_stop();
 +
}
 +
}
 +
 +
void motor_stop(){
 +
digitalWrite(motor_left[0], LOW);
 +
digitalWrite(motor_left[1], LOW);
 +
 +
digitalWrite(motor_right[0], LOW);
 +
digitalWrite(motor_right[1], LOW);
 +
delay(25);
 +
}
 +
 +
void drive_forward(){
 +
digitalWrite(motor_left[0], HIGH);
 +
digitalWrite(motor_left[1], LOW);
 +
 +
digitalWrite(motor_right[0], HIGH);
 +
digitalWrite(motor_right[1], LOW);
 +
}
 +
 +
void drive_backward(){
 +
digitalWrite(motor_left[0], LOW);
 +
digitalWrite(motor_left[1], HIGH);
 +
 +
digitalWrite(motor_right[0], LOW);
 +
digitalWrite(motor_right[1], HIGH);
 +
}
 +
</source>
 +
 +
{{#widget:YouTube|id=-Cz6nE9azLk|Video jízdy vpřed|right}}
 +
 
==se rozjel na zvukový povel ==
 
==se rozjel na zvukový povel ==
 
==jel ve čtyřúhelníku a zastavil se u počátečního bodu. ==
 
==jel ve čtyřúhelníku a zastavil se u počátečního bodu. ==
 
==jel v před a pokud čidlo ultrazvuku zjistí překážku se zastavil, kousek zacouval, otočil se o 160°  a celý cyklus pokračoval ==
 
==jel v před a pokud čidlo ultrazvuku zjistí překážku se zastavil, kousek zacouval, otočil se o 160°  a celý cyklus pokračoval ==
 +
<source lang="Cpp">
 +
int analogPin = 1;    // potentiometer wiper (middle terminal) connected to analog pin 3
 +
                      // outside leads to ground and +5V
 +
int val = 0;          // variable to store the value read
 +
 +
int motor_left[] = {6, 7};
 +
int motor_right[] = {8, 10};
 +
 +
void setup()
 +
{
 +
  Serial.begin(9600);          //  setup serial
 +
  int i;
 +
for(i = 0; i < 2; i++){
 +
pinMode(motor_left[i], OUTPUT);
 +
pinMode(motor_right[i], OUTPUT);
 +
}
 +
}
 +
 +
void loop()
 +
{
 +
  val = analogRead(analogPin);    // read the input pin
 +
  Serial.println(val);            // debug value
 +
if (val>600)                                                               
 +
  {
 +
  drive_forward();
 +
  delay(1000);
 +
  }
 +
  if (val <600)
 +
{
 +
motor_stop();
 +
drive_backward();
 +
delay(1600);
 +
turn_left();
 +
delay(1000);
 +
motor_stop();
 +
 +
  drive_forward();
 +
  delay(5000);
 +
}
 +
}
 +
 +
void motor_stop(){
 +
digitalWrite(motor_left[0], LOW);
 +
digitalWrite(motor_left[1], LOW);
 +
 +
digitalWrite(motor_right[0], LOW);
 +
digitalWrite(motor_right[1], LOW);
 +
delay(25);
 +
}
 +
 +
void drive_forward(){
 +
digitalWrite(motor_left[0], HIGH);
 +
digitalWrite(motor_left[1], LOW);
 +
 +
digitalWrite(motor_right[0], HIGH);
 +
digitalWrite(motor_right[1], LOW);
 +
}
 +
 +
void drive_backward(){
 +
digitalWrite(motor_left[0], LOW);
 +
digitalWrite(motor_left[1], HIGH);
 +
 +
digitalWrite(motor_right[0], LOW);
 +
digitalWrite(motor_right[1], HIGH);
 +
}
 +
 +
void turn_left(){
 +
digitalWrite(motor_left[0], LOW);
 +
digitalWrite(motor_left[1], HIGH);
 +
 +
digitalWrite(motor_right[0], HIGH);
 +
digitalWrite(motor_right[1], LOW);
 +
}
 +
 +
<source>
 +
 
== s pomocí čidla světla pohyboval po čáře ==
 
== s pomocí čidla světla pohyboval po čáře ==
 
== Start ve vzdálenosti 60 cm od černé linie. Robot najde dráhu a sleduje ji ==
 
== Start ve vzdálenosti 60 cm od černé linie. Robot najde dráhu a sleduje ji ==

Aktuální verze z 18. 6. 2012, 11:51

HW: Arduino realizace: Maxa David Charvát Jakub Lukáš Jílek

Robot Arduino


Úkoly:

  • Sestavte robota, napište program a vyzkoušejte proto, aby robot:

Obsah

se pohyboval vpřed do vzdálenosti 1m

int motor_left[] = {6, 7}
int motor_right[] = {8, 10}
 
void setup() {
Serial.begin(9600);
int i;
for(i = 0; i < 2; i++){
pinMode(motor_left[i], OUTPUT);
pinMode(motor_right[i], OUTPUT);
 
drive_forward();
delay(6200);
motor_stop();
Serial.println("1");
 
}
}
 
void loop() {
 
}
 
void motor_stop(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], LOW);
 
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], LOW);
}
 
void drive_forward(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);
 
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}

se pohyboval vpřed ve čtyřúhelníku o straně cca 0,5m

int motor_left[] = {6, 7};
 
int motor_right[] = {8, 10};
void setup() {
Serial.begin(9600);
int i;
for(i = 0; i < 2; i++){
pinMode(motor_left[i], OUTPUT);
pinMode(motor_right[i], OUTPUT);
}
}
 
void loop() {}
 
drive_forward();
delay(3200);
motor_stop();
Serial.println("1");
 
turn_left();
delay(420);
motor_stop();
Serial.println("3");
 
motor_stop();
delay(1000);
motor_stop();
Serial.println("5");
 
}
 
 
void motor_stop(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], LOW);
 
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], LOW);
delay(25);
}
 
void drive_forward(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);
 
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}
 
void turn_left(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH); 
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}

jel rovně a zastavil na 60 cm vzdáleném místě označeném černou lepící páskou

se pohyboval dokud nebude stisknutý dotykový senzor

int analogPin = 1;     //nastavení vstupního pinu ze senzoru
 
int val = 0;           // hodnota, která přijde z analogového pinu
 
int motor_left[] = {6, 7};
 int motor_right[] = {8, 10};
 
void setup()
{
  Serial.begin(9600);         
   int i;
 for(i = 0; i < 2; i++){
 pinMode(motor_left[i], OUTPUT);
 pinMode(motor_right[i], OUTPUT);
}
}
 
void loop()
{
  val = analogRead(analogPin);     // načtení vstupního pinu
 
if (val>600)                                                               
  {
  drive_forward();
  delay(1000);
  }
  if (val <600)
 {
 motor_stop();
}
}
 
void motor_stop(){
 digitalWrite(motor_left[0], LOW);
 digitalWrite(motor_left[1], LOW);
 
digitalWrite(motor_right[0], LOW);
 digitalWrite(motor_right[1], LOW);
 delay(25);
 }
 
void drive_forward(){
 digitalWrite(motor_left[0], HIGH);
 digitalWrite(motor_left[1], LOW);
 
digitalWrite(motor_right[0], HIGH);
 digitalWrite(motor_right[1], LOW);
 }
 
 void drive_backward(){
 digitalWrite(motor_left[0], LOW);
 digitalWrite(motor_left[1], HIGH);
 
digitalWrite(motor_right[0], LOW);
 digitalWrite(motor_right[1], HIGH);
 }

se rozjel na zvukový povel

jel ve čtyřúhelníku a zastavil se u počátečního bodu.

jel v před a pokud čidlo ultrazvuku zjistí překážku se zastavil, kousek zacouval, otočil se o 160° a celý cyklus pokračoval

int analogPin = 1;     // potentiometer wiper (middle terminal) connected to analog pin 3
                       // outside leads to ground and +5V
int val = 0;           // variable to store the value read
 
int motor_left[] = {6, 7};
 int motor_right[] = {8, 10};
 
void setup()
{
  Serial.begin(9600);          //  setup serial
   int i;
 for(i = 0; i < 2; i++){
 pinMode(motor_left[i], OUTPUT);
 pinMode(motor_right[i], OUTPUT);
}
}
 
void loop()
{
  val = analogRead(analogPin);    // read the input pin
  Serial.println(val);             // debug value
if (val>600)                                                                
  {
  drive_forward();
  delay(1000);
  }
  if (val <600)
 {
 motor_stop();
 drive_backward();
 delay(1600);
 turn_left();
 delay(1000);
 motor_stop();
 
   drive_forward();
  delay(5000);
}
}
 
void motor_stop(){
 digitalWrite(motor_left[0], LOW);
 digitalWrite(motor_left[1], LOW);
 
digitalWrite(motor_right[0], LOW);
 digitalWrite(motor_right[1], LOW);
 delay(25);
 }
 
void drive_forward(){
 digitalWrite(motor_left[0], HIGH);
 digitalWrite(motor_left[1], LOW);
 
digitalWrite(motor_right[0], HIGH);
 digitalWrite(motor_right[1], LOW);
 }
 
 void drive_backward(){
 digitalWrite(motor_left[0], LOW);
 digitalWrite(motor_left[1], HIGH);
 
digitalWrite(motor_right[0], LOW);
 digitalWrite(motor_right[1], HIGH);
 }
 
 void turn_left(){
 digitalWrite(motor_left[0], LOW);
 digitalWrite(motor_left[1], HIGH);
 
digitalWrite(motor_right[0], HIGH);
 digitalWrite(motor_right[1], LOW);
 }
 
<source>
 
== s pomocí čidla světla pohyboval po čáře ==
== Start ve vzdálenosti 60 cm od černé linie. Robot najde dráhu a sleduje ji ==
== Naučte robota šplhat přes minimálně 2,5 cm tlustou knihu. ==
== Najde předmět, uchopí a přiveze ==
== Nakombinujte různá čidla pro pohyb robota ==
Osobní nástroje
Jmenné prostory
Varianty
Akce
Rychlá navigace
NEJ aktivity
Nejlepší předměty
Nejlepší MCU
SW-HW
Ostatní
Utility
Nástroje
Tisk/export