#autonome

Dernière modification : -


work in progress automatisation !commenté (basé sur le code https://blog.the-jedi.co.uk/2015/11/26/nodemcu-motor-shield-review/ ) {{ //AUTOBOT 01022017 //un véhicule autonome basé sur NodeMCU + shield avec sonar et 4 moteurs int DistLeft; int DistMid; int DistRight; //on insère la librairie newping #include <NewPing.h> //on définit les pins ECHO & TRIGGER du sonar NewPing sonar(D6, D7, 100); // on définit des action en attribuant des valeurs aux moteurs sur les PINS suivants //PINS 4 & 5 en analogWrite de 0 à 1023 //PINS 0 & 2 en digitalWrite à 0 ou 1 void stop(void) {analogWrite(5, 0);analogWrite(4, 0);} void forward(void) {analogWrite(5, 1023);analogWrite(4, 1023);digitalWrite(0, HIGH);digitalWrite(2, LOW);} void backward(void) {analogWrite(5, 1023);analogWrite(4, 1023);digitalWrite(0, LOW);digitalWrite(2, HIGH);} void left(void) {analogWrite(5, 1023);analogWrite(4, 1023);digitalWrite(0, LOW);digitalWrite(2, LOW);} void right(void) {analogWrite(5, 1023);analogWrite(4, 1023);digitalWrite(0, HIGH);digitalWrite(2, HIGH);} //on définit les pins 0/2/4/5 pour les moteurs void setup() {pinMode(5, OUTPUT);pinMode(4, OUTPUT);pinMode(0, OUTPUT);pinMode(2, OUTPUT);} //on boucle sur les actions à faire void loop() { if (sonar.ping_cm() > 19) { forward(); } else if(sonar.ping_cm() <= 19) { stop(); DistMid = sonar.ping_cm(); backward(); delay(300); left(); delay(800); DistLeft = sonar.ping_cm(); right(); delay(1200); DistRight = sonar.ping_cm(); if (DistRight > DistLeft){ forward(); } else if (DistRight < DistLeft) { left(); delay(1200); forward(); } else if ((DistRight + DistLeft) < DistMin){ backward(); } } } }} !redux {{ #include <NewPing.h> NewPing sonar(D6, D7, 100); void stop(void) {analogWrite(5, 0);analogWrite(4, 0);} void forward(void) {analogWrite(5, 1023);analogWrite(4, 1023);digitalWrite(0, HIGH);digitalWrite(2, HIGH);} void backward(void) {analogWrite(5, 1023);analogWrite(4, 1023);digitalWrite(0, LOW);digitalWrite(2, LOW);} void left(void) {analogWrite(5, 1023);analogWrite(4, 1023);digitalWrite(0, LOW);digitalWrite(2, HIGH);} void right(void) {analogWrite(5, 1023);analogWrite(4, 1023);digitalWrite(0, HIGH);digitalWrite(2, LOW);} void setup() {pinMode(5, OUTPUT);pinMode(4, OUTPUT);pinMode(0, OUTPUT);pinMode(2, OUTPUT);} void loop() { if (sonar.ping_cm() > 20) { forward(); delay(600); } else { right(); delay(2000); } } }} =========================== [autobot.ino] {{ const short int BUILTIN_LED2 = 16; #include <NewPing.h> NewPing sonar(D6, D7, 100); void stop(void) { analogWrite(5, 0); analogWrite(4, 0); } void forward(void) { analogWrite(5, 1024); analogWrite(4, 1024); digitalWrite(0, HIGH); digitalWrite(2, HIGH); } void backward(void) { analogWrite(5, 1023); analogWrite(4, 1023); digitalWrite(0, LOW); digitalWrite(2, LOW); } void left(void) { analogWrite(5, 1023); analogWrite(4, 1023); digitalWrite(0, LOW); digitalWrite(2, HIGH); } void right(void) { analogWrite(5, 1023); analogWrite(4, 1023); digitalWrite(0, HIGH); digitalWrite(2, LOW); } void setup() { Serial.begin(115200); pinMode(BUILTIN_LED2, OUTPUT); digitalWrite(BUILTIN_LED2, LOW); pinMode(5, OUTPUT); // 1,2EN aka D1 pwm left pinMode(4, OUTPUT); // 3,4EN aka D2 pwm right pinMode(0, OUTPUT); // 1A,2A aka D3 pinMode(2, OUTPUT); // 3A,4A aka D4 } void loop() { delay(50); Serial.print("Ping: "); Serial.print(sonar.ping_cm()); Serial.println("cm"); if (sonar.ping_cm() > 20) { forward(); delay(300); } else { stop(); backward(); delay(600); } } }}