Code Ascenseur Uno
Code Ascenseur Uno
h>
#define SIGNAL_PIN 8
#define BUTTON_SIGNAL A0
#define DOOR_PIN 3
#define DOOR_IS_CLOSED 1
#define DOOR_IS_OPENED 2
#define CALL_ON_FLOOR 3
char command[2]={’0’,’0’};
Servo door;
void setup() {
pinMode(SIGNAL_PIN,OUTPUT);
pinMode(BUTTON_SIGNAL,INPUT);
door.attach(DOOR_PIN);
Serial.begin(9600);
closeDoor();
digitalWrite(SIGNAL_PIN,HIGH);
delay(100);
digitalWrite(SIGNAL_PIN,LOW);
delay(100);
void loop() {
readSerial(command);
decodeCommand(command);
calledFloor = whatFloorCall();
sendCommand(CALL_ON_FLOOR);
calledFloor = 0;
flagCallFloor = false;
closeDoor();
isElevatorErrived = false;
return;
elevatorIsArrived();
str[0] = ‘0’;
str[1] = ‘0’;
void elevatorIsArrived()
{ isElevatorErrived = true;
digitalWrite(SIGNAL_PIN,HIGH);
delay(500);
digitalWrite(SIGNAL_PIN,LOW);
openDoor();
flagCallFloor = true;
timeDelay = millis();
str[0] = ‘0’;
str[1] = ‘0’;
if(Serial.available())
delay(100);
byte i = 0;
str[i++] = Serial.read();
switch(codeOfCommand)
case DOOR_IS_CLOSED:
com[0] = ‘d’;
com[1] = ‘c’;
break;
case DOOR_IS_OPENED:
com[0] = ‘d’;
com[1] = ‘o’;
break;
case CALL_ON_FLOOR:
com[0] = ‘c’;
itoa(calledFloor,&com[1],10);
//com[1] = (char)calledFloor;
break;
Serial.write(com,2);
void openDoor()
door.write(180);
sendCommand(DOOR_IS_OPENED);
void closeDoor()
door.write(0);
sendCommand(DOOR_IS_CLOSED);
}
short whatFloorCall()
else return 0;