salut je débute arduino est j'ai fait un programme pour faire un coffre fort avec un servo, un clavier a membrane 4x4 et un écran lcd 16/2.
quand je dit a mon servo de de ce maitre a 90° il ce mais pendant 2s mais après il ce remais a 0 mais moi je voudrais qu'il reste a 90° et quand j'appuis sur B il ce mais a 0(pour refermer le coffre).
mon programme:
#include <Keypad.h>
#include <Servo.h>
#include <LiquidCrystal.h>
const int rs = 47, en = 40, d4 = 33, d5 = 32, d6 = 31, d7 = 30;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
bool ledState = false;
bool codeInProgress = false;
String enteredCode = "";
Servo myservo;
void setup() {
Serial.begin(9600);
myservo.attach(11);
lcd.begin(16, 2);
}
void loop() {
char key = keypad.getKey();
lcd.print("");
if (key)
{
if (key == 'A' && codeInProgress)
{
codeInProgress = false;
enteredCode = "";
Serial.println("Code annulé");
lcd.clear();
lcd.print("code annule");
delay(2000);
lcd.clear ();
} else {
{ enteredCode += key;
Serial.print("Code en cours ");
Serial.println(enteredCode);
lcd.println(enteredCode);
lcd.cursor();
}
if (enteredCode == "4477") {
codeInProgress = false;
enteredCode = "";
ledState = !ledState;
Serial.println("Code correct - LED " + String(ledState ? "allumée" : "éteinte"));
{
lcd.clear();
myservo.write(90);
delay(20);
lcd.print("Code correct");
delay(2000);
lcd.clear();
}
} else if (enteredCode.length() >= 4) {
codeInProgress = false;
enteredCode = "";
{
Serial.println("Code incorrect");
lcd.clear();
lcd.print("Code incorrect");
myservo.write(0);
delay(20);
delay(2000);
lcd.clear();
}
} else {
codeInProgress = true;
}
}
}
{ if (key == 'B' && codeInProgress);
myservo.write(0);
delay(20);
}
}