Stap 4: Arduino code
Dit is de code van de Arduino voor een collega nabijheid Scan door Sander van Haperen
Het was het laatst bijgewerkt in augustus 2014. Het is oorspronkelijk gebaseerd op een code voor de Arduino RSS feed project, door beignet
int startstring = 0; erkenning van begin van nieuwe tekenreeks int charcount = 0; houdt van totale tekens op het scherm
Const int ledPin = 6; de PIN-code of de LED is aangesloten op int incomingByte; een variabele om inkomende seriële gegevens in te lezen
#include string readString, incPinInit, incPin1, incPin2, incPin3, incPin4, incPin5, incPin6;
Servo myservo; servo-object om te bepalen van een servo maken / / maximaal acht servo-objecten kan worden gemaakt
#include / / import van de LiquidCrystal bibliotheek LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
void setup {Serial.begin(9600); / / seriële poort wordt geopend, wordt gegevenssnelheid ingesteld op 9600 bps lcd.begin(16,2); / / initialiseren van de grootte van de LCD 16 x 2. Wijzigen als met behulp van een grotere LCD-lcd.setCursor(0,0); Cursorpositie ingesteld op linksboven hoek
myservo.attach(6); hecht de servo op pin 9 op het servo-object voor (int thisPin = 2 thisPin < 13; thisPin ++) {//init 2 t/m 6 pinnen als uitgang pinMode (thisPin, OUTPUT);}}
void loop {char c = 0; / / voor binnenkomende seriële gegevens terwijl (de Serial.available()) {delay(5); //delay dat de buffer te vullen
Als (Serial.available() > 0) {}
char c = Serial.read(); krijgt van één byte van seriële buffer readString += c; maakt de tekenreeks readString}
Serial.println(readString);
Als (readString.length() > 0) {}
digitalWrite (13, hoge); LED pincode 13 instellen als indicator voor het ontvangen van seriële gegevens / / verwacht een tekenreeks als 07002100 met de incPinInit van de Staten pin = readString.substring (0, 1); het eerste teken om te controleren of init symbool krijgen
Serial.println(readString); Zie wat is ontvangen als (incPinInit == "*") {//check voor marker / 'kop' betekent dat ping stelt incPin1 = readString.substring (2, 3); //get de volgende teken-incPin2 = readString.substring (4, 5); //get de volgende teken-incPin3 = readString.substring (6, 7); //get de volgende teken-incPin4 = readString.substring (8, 9); //get de volgende teken-incPin5 = readString.substring (10, 11); //get de volgende teken-incPin6 = readString.substring (12, 13); //get het volgende teken
int n1 = incPin1.toInt(); int n2 = incPin2.toInt(); int n3 = incPin3.toInt(); int n4 = incPin4.toInt(); int n5 = incPin5.toInt(); int n6 = incPin6.toInt(); voor (int thisPin = 2 thisPin < 13; thisPin ++) {//reset standaardstatus voor alle pinnen lage digitalWrite (thisPin, laag);}
nu controleren alle 6 pin Staten en hoge schrijven als ping staat positief is als (n1 == 1) {digitalWrite (10, hoge);} als (n2 == 1) {digitalWrite (9, hoge);} als (n3 == 1) {digitalWrite (8, hoge);} als (n4 == 1) {digitalWrite (7, hoge);} als (n5 == 1) {digitalWrite (5, hoge);} als (n6 == 1) {digitalWrite (1, hoog);}
} Als (incPinInit == "~") {//check voor marker / 'kop' betekent dat ping stelt startstring = 0; / / Set de afdrukken op uit delay(5000); / / Wait 5 seconden lcd.clear(); / / veeg het scherm charcount = 0; / / reset van het aantal tekens op 0 lcd.setCursor(0,0); / / reset de cursor naar 0,0 als (startstring == 1) {/ / controleren als de tekenreeks is begonnen als eerste ' ~' is gelezen als (charcount < = 30) {/ / controleren als charcount loopt of gelijk aan 30 lcd.print(incomingByte); / / Print de huidige byte in de seriële Serial.print(incomingByte); charcount = CharCount ++; _ / / Verhogen de charcount door 1 ja ik weet het is onhandig}} als (charcount == 31) {/ / als de charcount gelijk aan 31 is aka het scherm is volledig delay(500); lcd.clear(); / / wissen van het scherm lcd.setCursor(0,0); / / cursor ingesteld op 0,0 lcd.print(incomingByte); / / blijven afdrukken gegevens charcount = 1; / / set charcount terug naar 1} als (incomingByte == ' ~') {/ / Check als byte marker is ~ om te beginnen de afdrukken startstring = 1; / / beginnen met afdrukken}} digitalWrite (13 LAAG); int pos = 90; variabele op te slaan van de servo positie myservo.write(pos); vertellen van de servo naar positie in de variabele 'pos' delay(10);
}
} readString = ""; }