Bonjour !
Nous sommes deux étudiants travaillant sur un projet de SI qui se termine dans une semaine. Or, nous avons un gros problème : nous utilisons deux cartes Arduino : une Mega et une UNO. Nous n'arrivons pas à faire communiquer les cartes. Nous avons connaissance de TX/RX par exemple, mais nous avons beaucoup de mal à écrire un code qui marche... Voici notre code actuel :
#include <LiquidCrystal.h>
LiquidCrystal lcd(5, 6, 7, 8, 9, 10);
int E1 = 6;
int M1 = 7;
int E2 = 5;
int M2 = 4;
int lcd_key = 0;
int adc_key_in = 0;
int speakerPin = 31;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
#define btnRST 6
int read_LCD_buttons()
{adc_key_in = analogRead(0);
if (adc_key_in > 1000) return btnNONE;
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 250) return btnUP;
if (adc_key_in < 450) return btnDOWN;
if (adc_key_in < 650) return btnLEFT;
if (adc_key_in < 850) return btnSELECT; }
void setup()
{
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
pinMode (speakerPin, OUTPUT);
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Bonjour,tri?");
}
void loop()
{
lcd.setCursor(0,1);
lcd_key = read_LCD_buttons();
switch (lcd_key)
{
case btnSELECT:
{
int value = 255;
lcd.print("LUNDI ");
lcd.clear();
lcd.print("En cours");
digitalWrite(M1,LOW);
digitalWrite(M2,LOW);
analogWrite(E1, value);
analogWrite(E2, value);
analogWrite (speakerPin, 1); // Activer le buzzer
delay (30000) ; // Pendant 30s
break;
}
case btnLEFT:
{
int value = 255;
lcd.print("MARDI ");
lcd.clear();
lcd.print("En cours");
digitalWrite(M1,LOW);
digitalWrite(M2,LOW);
analogWrite(E1, value);
analogWrite(E2, value);
analogWrite (speakerPin, 1); // Activer le buzzer
delay (30000) ; // Pendant 30s
break;
}
case btnUP:
{
int value = 255;
lcd.print("MERCREDI ");
lcd.clear();
lcd.print("En cours");
digitalWrite(M1,LOW);
digitalWrite(M2,LOW);
analogWrite(E1, value);
analogWrite(E2, value);
analogWrite (speakerPin, 1); // Activer le buzzer
delay (30000) ; // Pendant 30s
break;
}
case btnDOWN:
{
int value = 255;
lcd.print("JEUDI ");
lcd.clear();
lcd.print("En cours");
digitalWrite(M1,LOW);
digitalWrite(M2,LOW);
analogWrite(E1, value);
analogWrite(E2, value);
analogWrite (speakerPin, 1); // Activer le buzzer
delay (30000) ; // Pendant 30s
break;
}
case btnRIGHT:
{
int value = 255;
lcd.print("VENDREDI");
lcd.clear();
lcd.print("En cours");
digitalWrite(M1,LOW);
digitalWrite(M2,LOW);
analogWrite(E1, value);
analogWrite(E2, value);
analogWrite (speakerPin, 1); // Activer le buzzer
delay (30000) ; // Pendant 30s
break;
}
case btnNONE:
{
lcd.print(" ");
break;
}
}
}
L'écran LCD et le buzzer se trouvent sur la MEGA, et les drivers moteurs se trouvent sur la UNO. Toute aide est la bienvenue, mais sans vouloir sembler impatient, le temps nous est compté ![]()
Merci d'avance.