RFID kontrolleras bilen stammen (5 / 8 steg)
Steg 5: Förstå koden
/////////////////////////////////////////////
#include < Servo.h > / / Includes bibliotek (datafiler) som inkluderar rader kod för servo
Servo myservo; Ger servo ett namn
int RFIDResetPin = 0;
Registrera din RFID-taggar här
char tag1 [13] = "---"; Först tag ID, jag ersatte bokstäver och siffror med bindestreck (jag hade snarare du motsvarande
inte hacka mitt system...)
char tag2 [13] = "---"; Andra tagg-ID
void setup() {/ / allt inom den ogiltiga setup körs koden en gång vid start
Serial.BEGIN(9600); Ställer in en anslutning till datorn när prototyper, otroligt bra att räkna ut vad som händer i
koden eftersom den kan skriva ut rader kod på en datorskärm
myservo.attach(8); Fäster servo till en specifik stift på arduino, detta är som lane av en motorväg för information
myservo.write(178); Anger den begränsade rotationen (0-180 grader) servo till 178, idle position
pinMode (RFIDResetPin, OUTPUT); Rensar skiffer för avkänning en tagg
digitalWrite (RFIDResetPin, hög); sätter på "högsta beredskap"
}
void loop() {//everything inom void loopen körs via linjärt om och om igen
char tagString [0]; ett par rader arbete med inkommande data för att förvandla det till siffror och bokstäver som bildar
heltal index = 0; ID-taggen
booleska läsning = false;
While(Serial.available()) {//while det är en seriell anslutning (medan läsaren kommunicerar till styrelsen...)
int readByte = Serial.read(); Läs nästa tillgängliga byte //code som börjar dekodning (haha) binära
IF(readByte == 2) läsning = sant; början av tag
IF(readByte == 3) läsning = false; slutet av taggen
om (reading & & readByte! = 2 & & readByte! = 10 & & readByte! = 13) {
lagra etiketten
tagString [index] = readByte;
index ++;
}
}
checkTag(tagString); Kontrollera om det är en match
clearTag(tagString); Rensa röding av alla värde
resetReader(); återställa RFID-läsare
}
void checkTag (char tag[]) {//Check Läs etiketten mot kända märken
IF(strlen(tag) == 0) återvända; Tom, utan att behöva contunue
om (compareTag (tag, tag1)) {/ / om matchade tag1, göra detta
servoGo(); Aktivera servo!
Serial.println ("kort 1 läsa"); skriva ut "kort 1 läsa" till datorn, hjälper se om koden når denna punkt när och hur det
bör
}
/*
annars om (compareTag (tag, tag2)) {//if matchas tag2, göra detta
servoGo(); Aktivera servo!
Serial.println ("kort 2 läsa");
}*/
/ * annat {
Serial.println(tag); läste ut en okänd tagg
Serial.println ("okänt kort");
}*/
}
void servoGo() {
Serial.println ("Servo aktiverat"); skriver ut en linje till den dator som säger mig att dess når denna punkt
myservo.write(20); skriver servo till en position som kommer att dra i sladden som dyker stammen
Delay(500);
myservo.write(178); återställer ståndpunkten för nästa aktivering
Delay(2000);
Serial.println ("Servo Action komplett"); en linje till datorn bekräftar slutförandet av denna metod (extern kod för
sorterar)
}
Resten är koden som används för att styra systemet som läser koden
void resetReader() {
Återställa RFID-läsare att läsa igen.
digitalWrite (RFIDResetPin, låg);
digitalWrite (RFIDResetPin, hög);
Delay(150);
}
void clearTag (char one[]) {
Rensa char matrisen genom att fylla med null - ASCII 0
Kommer att tänka samma tagg har lästs annars
för (int jag = 0; jag < strlen(one); i ++) {
en [i] = 0;
}
}
booleska compareTag (char [en], char two[]) {
Jämför två värde att se om samma,
Strcmp inte fungerar 100% så det gör vi
IF(strlen(One) == 0) return false; Tom
för (int jag = 0; jag < 12, i ++) {
om (en [i]! = two[i]) return false;
}
return true; inga avvikelser
}
bild: http://www.thinkgeek.com/images/products/additional/large/wrapping_paper-binary.jpg