AplTVY3-B3-1sk-4T

Z MediaWiki SPŠ a VOŠ Písek
Skočit na navigaci Skočit na vyhledávání
Verze k tisku již není podporovaná a může obsahovat chyby s vykreslováním. Aktualizujte si prosím záložky ve svém prohlížeči a použijte prosím zabudovanou funkci prohlížeče pro tisknutí.

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:

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

<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

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