Il nostro progetto è quello del line follower, ovvero fare in modo che il robottino segua una linea nera.
Il line follower sfrutta questi due sensori dell’mBot:
Essi lavorano con un led che emana raggi infrarossi e in base a quanti ne ritornato al fotodiodo capiscono se la superficie sottostante è nera o bianca, in quanto una superficie chiara fa ritornare tanti raggi quanti glie ne arrivano, mentre una superficie scura fa ritornare una quantità minima di raggi rispetto a quelli che gli sono arrivati:
Il nostro programma è il seguente:
Che tradotto in linguaggio c:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 #include <Arduino.h>#include <Wire.h>#include <SoftwareSerial.h>
#include <MeMCore.h>
MeDCMotor motor_9(9);MeDCMotor motor_10(10);void move(int direction, int speed){int leftSpeed = 0;int rightSpeed = 0;if(direction == 1){leftSpeed = speed;rightSpeed = speed;}else if(direction == 2){leftSpeed = -speed;rightSpeed = -speed;}else if(direction == 3){leftSpeed = -speed;rightSpeed = speed;}else if(direction == 4){leftSpeed = speed;rightSpeed = -speed;}motor_9.run((9)==M1?-(leftSpeed):(leftSpeed));motor_10.run((10)==M1?-(rightSpeed):(rightSpeed));}double angle_rad = PI/180.0;double angle_deg = 180.0/PI;double speed;double temp;MeLineFollower linefollower_1(1);
void setup(){speed = 150;}
void loop(){temp = linefollower_1.readSensors();if(((temp)==(0 ))){move(2,speed);}else{if(((temp)==(1 ))){move(3,speed);}else{if(((temp)==(2 ))){move(4,speed);}else{move(1,speed);}}}_loop();}
void _delay(float seconds){long endTime = millis() + seconds * 1000;while(millis() < endTime)_loop();}
void _loop(){}
Nessun commento:
Posta un commento