Bonjour à tous
Voila j'essaye d'envoyer une serie de données de ma rasPi vers l'arduino et toutes les 1 secondes envoyer des données de mon arduino vers la rasPi (données des capteurs)
J'ai essayé ceci mais je constate un ralentissement sur les tâches que mon robot a à executer ! il recoit bien l'information ! l'arduino reçoit bien les informations mais elle excute bien aprés ...
Je fais une boucle avec Millis pour ne pas bloquer pourtant !
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Ultrasonic.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
#define ONE_WIRE_BUS 22
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature ds18b20(&oneWire);
#define T1 24
#define E1 26
#define T2 23
#define E2 25
#define T3 27
#define E3 28
Ultrasonic ultrasonic1(T1, E1);
Ultrasonic ultrasonic2(T2, E2);
Ultrasonic ultrasonic3(T3, E3);
// Moteur A
int dir1PinA = 13;
int dir2PinA = 12;
// Moteur B
int dir1PinB = 11;
int dir2PinB = 8;
// Vitesse Moteur
int speedPinA = 10;
int speedPinB = 9;
int speed = 0;
char incomingByte;
long timedatasend = 1000;
long previousMillis = 0;
void setup() {
ds18b20.begin();
lcd.begin(16, 2);
Serial.begin(9600);
lcd.print("KBOT");
pinMode(dir1PinA, OUTPUT);
pinMode(dir2PinA, OUTPUT);
pinMode(speedPinA, OUTPUT);
pinMode(dir1PinB, OUTPUT);
pinMode(dir2PinB, OUTPUT);
pinMode(speedPinB, OUTPUT);
speed = 100;
delay(5000);
}
float temperature(){
ds18b20.requestTemperatures();
return ds18b20.getTempCByIndex(0);
}
float ultrason(){
long microsec = ultrasonic1.timing();
float cmMsec = ultrasonic1.convert(microsec, Ultrasonic::CM);
}
void loop()
{
if (Serial.available() > 0) {
lcd.setCursor(0, 0);
lcd.print("KBOT CONNECTED");
incomingByte = Serial.read();
//Serial.println(incomingByte, DEC);
analogWrite(speedPinA, speed);
analogWrite(speedPinB, speed);
switch (incomingByte)
{
case 'A':
analogWrite(speedPinA, speed);
analogWrite(speedPinB, speed);
digitalWrite(dir1PinA, LOW);
digitalWrite(dir2PinA, HIGH);
digitalWrite(dir1PinB, HIGH);
digitalWrite(dir2PinB, LOW);
break;
case 'B':
digitalWrite(dir1PinA, LOW);
digitalWrite(dir2PinA, LOW);
digitalWrite(dir1PinB, LOW);
digitalWrite(dir2PinB, LOW);
break;
case 'C':
analogWrite(speedPinA, speed);
analogWrite(speedPinB, speed);
digitalWrite(dir1PinA, HIGH);
digitalWrite(dir2PinA, LOW);
digitalWrite(dir1PinB, LOW);
digitalWrite(dir2PinB, HIGH);
break;
case 'D':
analogWrite(speedPinA, speed);
analogWrite(speedPinB, speed);
digitalWrite(dir1PinA, LOW);
digitalWrite(dir2PinA, HIGH);
digitalWrite(dir1PinB, LOW);
digitalWrite(dir2PinB, HIGH);
break;
case 'G':
analogWrite(speedPinA, speed);
analogWrite(speedPinB, speed);
digitalWrite(dir1PinA, HIGH);
digitalWrite(dir2PinA, LOW);
digitalWrite(dir1PinB, HIGH);
digitalWrite(dir2PinB, LOW);
break;
default:
Serial.print("commande : ");
Serial.print(incomingByte);
break;
}
}
//unsigned long currentMillis = millis();
//if(currentMillis - previousMillis > timedatasend) {
//
//
//
//
// previousMillis = currentMillis;
// float sondetemperature = temperature();
// float U1 = ultrason();
// Serial.println(sondetemperature);
// Serial.println(U1);
// }
}
Le code qui perturbe est commenté ... et la cela marche ! c'est plus rapide !
Pr info pour l'info sur la rasPi je ne gère pas la reception juste l'émission
cdlt,
bypbop













