Ajout dessin berceau pour servomoteur,

Mise à jour du code
This commit is contained in:
Pierrick C 2017-09-19 21:06:53 +02:00
parent 2aefaef6c3
commit 5e2c3d652f
3 changed files with 85 additions and 62 deletions

View File

@ -34,7 +34,7 @@ long door_timer = 0; // timer to close the door
long servo_timer = 0; //timer to stop powering servomotor long servo_timer = 0; //timer to stop powering servomotor
long red_led_timer = 0; long red_led_timer = 0;
byte tag1[14] = {2,52,54,48,48,57,49,48,57,56,48,53,69,3}; //byte tag1[14] = {2,52,54,48,48,57,49,48,57,56,48,53,69,3};
byte newtag[14] = EMPTY_TAG; // used for read comparisons byte newtag[14] = EMPTY_TAG; // used for read comparisons
const byte emptytag[14] = EMPTY_TAG; const byte emptytag[14] = EMPTY_TAG;
const byte unwrittentag[14] = UNWRITTEN_TAG; const byte unwrittentag[14] = UNWRITTEN_TAG;
@ -54,7 +54,7 @@ byte * readeepromtag(short tagnb=0) {
for (int i=0; i<14; i++) for (int i=0; i<14; i++)
{ {
tag[i]=EEPROM.read(i + tagnb*14); tag[i]=EEPROM.read(i + tagnb*14);
delay(2); //small delay to avoid misreading //delay(2); //small delay to avoid misreading
} }
return tag; return tag;
} }
@ -87,58 +87,6 @@ int findtag(byte searchtag[14]) {
return -1; return -1;
} }
void setup() {
// start serial to PC
Serial.begin(115200);
// start serial to RFID reader
RFID.begin(9600);
// empty the data cache
while (RFID.available()) {
RFID.read();
}
//attaches servo
door_servo.attach(SERVO_CTRL);
// for status LEDs
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
//Mode for button and end-stop
pinMode(PROG_BUTTON, INPUT_PULLUP);
Serial.print(F("EEPROM length : "));
Serial.print(EEPROM.length());
Serial.print(F(" bytes ("));
Serial.print(maxeepromtags());
Serial.println(F(" tags)"));
Serial.println(findtag(newtag));
Serial.println(findtag(unwrittentag));
for(byte n=0; n<maxeepromtags(); n++)
{
Serial.print(F("Tag n°"));
Serial.print(n);
Serial.print(": ");
byte *t;
t=readeepromtag(n);
for (int z = 0; z < 14 ; z++)
{
Serial.print(t[z]);
Serial.print(",");
}
Serial.println("");
}
}
void checkmytags() {
// compares each tag against the tag just read
// if it is 1 or more we have a match, zero is a read but no match,
// -1 is no read attempt made
if (comparetag(newtag, tag1)) tag_ok=1;
}
void tagOK() { void tagOK() {
if (digitalRead(PROG_BUTTON)) if (digitalRead(PROG_BUTTON))
{ {
@ -152,7 +100,7 @@ void tagOK() {
} }
else else
{ {
addNewTag(newtag); delTag(newtag);
} }
} }
@ -165,7 +113,7 @@ void tagNoOK() {
red_led_timer = millis() + 1000; red_led_timer = millis() + 1000;
} }
else { else {
delTag(newtag); addNewTag(newtag);
} }
} }
@ -183,14 +131,17 @@ void readRFID() {
} }
RFID.flush(); // stops multiple reads RFID.flush(); // stops multiple reads
// do the tags match up? // do the tag exist in EEPROM
checkmytags(); if (findtag(newtag) >= 0) tag_ok=1;
if (tag_ok>0) break; if (tag_ok>0) break;
} }
//Check if the tag is not an error before doing anything
if (!comparetag(newtag, unwrittentag)) {
// now do something based on tag type // now do something based on tag type
if (tag_ok > 0) tagOK(); if (tag_ok > 0) tagOK();
else tagNoOK(); else tagNoOK();
}
// empty the data cache // empty the data cache
while (RFID.available()) { while (RFID.available()) {
@ -280,11 +231,83 @@ void updateRedLED() {
void addNewTag(byte tag[14]) { void addNewTag(byte tag[14]) {
Serial.print(F("Adding new tag to EEPROM : ")); Serial.print(F("Adding new tag to EEPROM : "));
for (int z = 0; z < 14 ; z++) Serial.print(tag[z]); for (int z = 0; z < 14 ; z++) Serial.print(tag[z]);
Serial.println("");
//Find first empty or unwritten space in EEPROM
int tagnb = findtag(emptytag);
if (tagnb < 0){
Serial.println(F("No empty space found."));
tagnb = findtag(unwrittentag);
if (tagnb < 0) {
Serial.println(F("No unwritten space found either. Can't save more tag."));
for (int i=0; i<4; i++) {
digitalWrite(RED_LED, HIGH);
delay(500);
digitalWrite(RED_LED, LOW);
delay(500);
}
return -1;
}
}
Serial.print(F("New tag number : "));
Serial.println(tagnb);
Serial.print(F("Writing..."));
for (int z = 0; z < 14 ; z++) EEPROM.write(z+tagnb, tag[z]);
Serial.print(F(" Checking..."));
byte tmptag[14];
for (int z = 0; z < 14 ; z++) tmptag[z]=EEPROM.read(tag[z+tagnb]);
if (comparetag(tmptag, tag)) Serial.println("OK");
else Serial.println("Failed");
} }
void delTag(byte tag[14]) { void delTag(byte tag[14]) {
Serial.print(F("Deleting tag from EEPROM : ")); Serial.print(F("Deleting tag from EEPROM : "));
for (int z = 0; z < 14 ; z++) Serial.print(tag[z]); for (int z = 0; z < 14 ; z++) Serial.print(tag[z]);
Serial.println("");
}
void setup() {
// start serial to PC
Serial.begin(115200);
// start serial to RFID reader
RFID.begin(9600);
// empty the data cache
while (RFID.available()) {
RFID.read();
}
// for status LEDs
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
//Mode for button and end-stop
pinMode(PROG_BUTTON, INPUT_PULLUP);
Serial.print(F("EEPROM length : "));
Serial.print(EEPROM.length());
Serial.print(F(" bytes ("));
Serial.print(maxeepromtags());
Serial.println(F(" tags)"));
Serial.println(findtag(newtag));
Serial.println(findtag(unwrittentag));
// for(byte n=0; n<maxeepromtags(); n++)
// {
// Serial.print(F("Tag n°"));
// Serial.print(n);
// Serial.print(": ");
// byte *t;
// t=readeepromtag(n);
// for (int z = 0; z < 14 ; z++)
// {
// Serial.print(t[z]);
// Serial.print(",");
// }
// Serial.println("");
// }
} }
void loop() { void loop() {
@ -296,5 +319,5 @@ void loop() {
updateRedLED(); updateRedLED();
delay(10); //delay(10);
} }

BIN
plans/berceau-MG996R.stl Normal file

Binary file not shown.

Binary file not shown.