/* Club SI Les Orangers * FabLab Temara, http://fablab.uniontelecom.ma * Projet Robot Didactique */ int motor1Pin1 = 4; // pin IN1 on L298N IC int motor1Pin2 = 5; // pin IN2 on L298N IC int enable1Pin = 6; // pin EN A on L298N IC PWM int motor2Pin1 = 7; // pin IN3 on L298N IC int motor2Pin2 = 8; // pin IN4 on L298N IC int enable2Pin = 9; // pin EN B on L298N IC PWM int horn = 10; int state; int vitesse=127; // PWM à 50 % void setup() { // Declaration des pins en mode sortie pinMode(motor1Pin1, OUTPUT); pinMode(motor1Pin2, OUTPUT); pinMode(enable1Pin, OUTPUT); pinMode(motor2Pin1, OUTPUT); pinMode(motor2Pin2, OUTPUT); pinMode(enable2Pin, OUTPUT); // Initialion de la communication serie avec la vitesse de 9600 bits par seconde Serial.begin(9600); } void loop() { //Si un caractere est reçu il sera enregistré dans la variable state if(Serial.available() > 0){ state = Serial.read(); } // Si state = F le robot avance if (state == 'F') { analogWrite(enable1Pin, vitesse); // en mode PWM analogWrite(enable2Pin, vitesse); // en mode PWM digitalWrite(motor1Pin1, HIGH); digitalWrite(motor1Pin2, LOW); digitalWrite(motor2Pin1, LOW); digitalWrite(motor2Pin2, HIGH); } // Si state = R le robot vire à droit else if (state == 'R') { analogWrite(enable1Pin, vitesse); // en mode PWM analogWrite(enable2Pin, vitesse); // en mode PWM digitalWrite(motor1Pin1, HIGH); digitalWrite(motor1Pin2, LOW); digitalWrite(motor2Pin1, LOW); digitalWrite(motor2Pin2, LOW); } // Si state = S le robot s'arrete else if (state == 'S' ) { analogWrite(enable1Pin, vitesse); // en mode PWM analogWrite(enable2Pin, vitesse); // en mode PWM digitalWrite(motor1Pin1, LOW); digitalWrite(motor1Pin2, LOW); digitalWrite(motor2Pin1, LOW); digitalWrite(motor2Pin2, LOW); noTone(horn); } // Si state = L le robot vire à gauche else if (state == 'L') { analogWrite(enable1Pin, vitesse); // en mode PWM analogWrite(enable2Pin, vitesse); // en mode PWM digitalWrite(motor1Pin1, LOW); digitalWrite(motor1Pin2, LOW); digitalWrite(motor2Pin1, LOW); digitalWrite(motor2Pin2, HIGH); } // Si state = B le robot recule else if (state == 'B') { analogWrite(enable1Pin, vitesse); // en mode PWM analogWrite(enable2Pin, vitesse); // en mode PWM digitalWrite(motor1Pin1, LOW); digitalWrite(motor1Pin2, HIGH); digitalWrite(motor2Pin1, HIGH); digitalWrite(motor2Pin2, LOW); } // Si state = H un son de 1000 hz est generé mais attention tone() affecte le PWM sur les ports 3 et 11 else if (state == 'H') {tone(horn,1000); } // Si state = 1 la vitesse est reglée à 50 % via le PWM else if (state == '1'){vitesse=127;} // PWM à 50 % // Si state = 2 la vitesse est reglée à 75 % via le PWM else if (state == '2'){vitesse=191;} // PWM à 75 % // Si state = 3 la vitesse est reglée à 100 % via le PWM else if (state == '3'){vitesse=255;} // PWM à 100 % // N.B. le son s'arrete avec Stop , le reglage de la vitesse se fait en mode arret }