Stap 5: CODE en gaan!!
1) Zorg ervoor dat u hebt SoftwareSerial.h. Dit laat ons toe om twee seriële exemplaren tegelijk uitvoeren!
2) uploaden van de code je arduino
3) start knoppen in te drukken voor feedback
4) u wilt wijzigen de xbee-ID. Deze waarden worden geschreven everytime die de arduino is ingeschakeld.
5) Ga vinden iets te controle!
Arduino pro 5v code met newhaven-besturingsprotocol:
#include
SoftwareSerial xbeeSerial (12, 13); RX, TX
variabelen
int i = 0;
int j = 0;
int m = 0;
int dChange = 0;
int sChange = 0;
int stChange = 0;
int ret = 0;
int uitvoeren = 0;
int inByte = 0;
int omhoog = 3;
int omlaag = 4;
int links = 5;
int rechts = 6;
int Selecteer = 7;
int begin = 8;
int opdrachten [100]; //for-util
int input [6] = {omhoog, omlaag, links, rechts, selecteer, start};
int buttonState [6];
char * richtingen [] = {"Vooruit", "Omgekeerde", "Links", "Rechts", "SELECT", "START"};
char * dlist [] = {"F", "R", "<", ">", "sel", "sta"};
byte xbeeSend [4] = {0x31, 0x32, 0x33, 0x34};
char [roverData] = "";
Newhaven NHD-0220D3Z-NSW-BBW-V3 opdrachten
byte programma = 0xFE;
byte displayOn = 0x41;
byte displayOff = 0x42;
byte cursorPos = 0x45; Set van 1 byte
byte cursorHome = 0x46;
byte underlineOn = 0x47;
byte underlineOff = 0x48;
byte cursorLeft = 0x49;
byte cursorRight = 0x4A;
byte blinkingOn = 0x4B;
byte blinkingOff = 0x4C;
byte backspace = 0xFE;
byte clearScreen = 0x51;
byte setContrast = 0x52; //1 byte set
byte setBrightness = 0x53; set van 1 byte
byte aangepaste = 0x54;
byte displayLeft = 0x55;
byte displayRight = 0x56;
byte firmware = 0x70;
/*
0xFE 0x61 1 byte verandering RS‐232 BAUDrate 3mS
0xFE 0x62 1 byte verandering I2C adres 3mS
0xFE 0x70 geen weergave firmware versie nummer 4mS
0xFE 0x71 geen weergeven RS‐232 BAUDrate 10mS
0xFE 0x72 geen Display I2C adres 4mS
*/
VOID Setup
{
Open seriële com en definiëren van ingangen
Serial.begin(9600);
xbeeSerial.begin(9600);
voor (ik = 3; ik < 9; i ++) {}
pinMode (i, ingang);
}
lcdCommand(program,clearScreen);
delay(500);
//
Zet de radio in de command stand:
xbeeSerial.print("+++");
wachten op de radio om te reageren met "OK\r"
char thisByte = 0;
terwijl (thisByte! = '\r') {}
Als (xbeeSerial.available() > 0) {}
thisByte = xbeeSerial.read();
// }
// }
het doeladres met 16-bits adressering instellen Deze radio's
bestemming moet dat de andere radio is mijn adres en omgekeerd:
xbeeSerial.print ("ATDH0, DL1234\r");
xbeeSerial.print("ATMY5678\r"); mijn adres (16-bits adressering) instellen
instellen van de PAN-ID. Als je in een plaats waar veel mensen
zijn via XBees, het kiezen van een unieke ID van de PAN
xbeeSerial.print("ATID1111\r");
xbeeSerial.print("ATCN\r");
xbeeListen();
}
ongeldig xbeeListen() {}
char thisByte = 0;
Als (Serial.available() > 0) {}
thisByte = Serial.read();
}
}
void loop / / LOOPY!
{
lcdCommand(program,cursorHome);
lcdCommand(program,blinkingOn);
lcdCommand(program,setContrast);
Serial.write(0x28);
readDpadInput();
readSelInput();
lcdCommand(program,cursorRight);
Serial.Print("Command:");
Serial.Print(j);
Serial.Print("?");
lcdCommand(program,cursorPos);
Serial.write(0x40);
while(dChange ==1) {}
directionFeedback();
delay(500);
opdrachten [j] = ret;
j ++;
lcdCommand(program,clearScreen);
dChange = 0;
}
delay(500);
}
seriële
instructieprotocol:
int lcdCommand (byte adres, int value) {}
Serial.write (adres); //CORRECT syntaxis voor LCD-opdrachten
Serial.write(Value);
}
Lees input
int readDpadInput() {}
voor (ik = 0; ik < 4; i ++) {}
buttonState[i]=digitalRead(input[i]);
dChange = buttonState [i] + dChange;
}
}
int readSelInput() {}
buttonState[4]=digitalRead(input[4]);
sChange = buttonState [4] + sChange;
}
int readStartInput() {}
buttonState[5]=digitalRead(input[5]);
stChange = buttonState [5] + stChange;
}
aanwijzingen
int directionFeedback() {}
voor (ik = 0; ik < 4; i ++) {}
switch(buttonState[i]) {}
geval van 0: lcdCommand(program,cursorHome);
breken;
Case 1:
lcdCommand(program,blinkingOff);
lcdCommand(program,cursorPos);
Serial.write(0xC);
Serial.Print(Directions[i]);
xbeeSerial.print(i+1);
handleSerial();
delay(1000);
xbeeSerial.write("\r");
RET = i;
breken;
}
}
}
int handleSerial() {}
xbeeSerial.print(56);
if(xbeeSerial.available() > 0) {}
inByte = xbeeSerial.read();
Serial.Print(inByte);
}
}