Schritt 3: De code
Het Programmeren van de 2,4 Ghz Verzender En Ontvanger ist Eigenlijk Heel Makkelijk will er Zijn Meerdere Bibliotheken Te Vinden Om Dat Voor Elkaar Te Krijgen.
Het Verzenden:
/*----------------------------------------------------
Programma Om de Variabelen me Te Zenden Vanaf de Controller En Ontvangen Naar de Controller.
hergestellt von: Dave Den Haan
Signal - Arduino pin
1 GND GND
2 VCC 5V
CE 3 8
CSN 4 9
SCK 5 13
MOSI 6 11
MISO 7 12
IRQ 8-
De Eerste Rij ist de Volgorde van de Pinnen Op de NRF24L01 En de Rij Ernaast Waaraan Het Moet Verbinden in arduino
-------------------------------------------------------*/
#include
#include
#include
#include
#include
#include
Definieren Sie die CE und CSN-Pins, so dass sie einfach später geändert werden können bei Bedarf.
#define CE_PIN 8
#define CSN_PIN 9
Erstellen Sie ein neues Radio mit CE & CSN Pins
RF24 MyRadio (CE_PIN, CSN_PIN);
Erstellen Sie Adresse zum Senden und empfangen
befasst sich mit Byte [] [6] = {"1Node", "2Node"};
LCD-Adresse LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, positiv);
Joystick & Potentiometer hinzufügen
const Int JS_Y = A2; const Int JS_X = A1; const Int Potkal = A3;
Fügen Sie Datastruct Save übertragen/empfangenen Werte Struct DataStruct {Int Y, Int Kal; Int X;} tData;
Struct dataStruct2 {}
schweben Sie Serv; Snelheid schweben = 0,00; } rData;
unsigned long startLCD1 = 0; unsigned long startLCD2 = 0;
Int Last_tData_Y; Int Last_tData_Kal = 16; Float Last_rData_Serv; Float Last_rData_snelheid = 200;
void transceive();
void rereshLCD();
void setup() {}
Verwenden Sie den seriellen Monitor auf Baudrate von 115200 Serial.begin(115200); Delay(250); Serial.println ("Wireless Übertragung");
Das Radio starten
myRadio.begin();
Eingestellten WLAN-Kanal über die meisten normalen WLAN-Kanäle
myRadio.setChannel(108);
PA Ebene, wählen die man zu verwenden. Niedrig zu Testzwecken, hoch für die Verwendung von
myRadio.setPALevel(RF24_PA_MIN);
myRadio.setPALevel(RF24_PA_MAX);
Öffnen Sie die Lese- und Schreibvorgänge in Rohren.
myRadio.openWritingPipe(addresses[0]);
myRadio.openReadingPipe (1, addresses[1]);
Delay(500);
Eingestellten LCD
LCD.Begin (20, 4); LCD.Print (Spalte, Zeile)
lcd.setCursor (2, 0);
LCD.Print ("Wireless Rennwagen");
lcd.setCursor (6, 1);
LCD.Print ("made by");
lcd.setCursor (3, 2);
LCD.Print ("Groep 4 - SCS")
Pinmodes initialisieren
PinMode (JS_Y, Eingabe);
PinMode (JS_X, Eingabe);
PinMode (Potkal, Eingabe);
Delay(3000);
LCD.Clear();
LCD-Bildschirm festlegen
lcd.setCursor (2, 0);
LCD.Print ("Wireless Rennwagen:");
lcd.setCursor (0, 1);
LCD.Print ("Kalibratie:");
lcd.setCursor (5, 2);
LCD.Print ("Accu %:");
lcd.setCursor (2, 3);
LCD.Print ("Snelheid:");
}
void loop() {}
/*
Potvalue lesen
Wert senden
*/
tData.X = map(analogRead(JS_X), 12, 1023,-255, 255);
tData.Y = map(analogRead(JS_Y), 13, 1023, 45, 130);
tData.Y = (analogRead(JS_Y));
tData.Kal = map(analogRead(potkal), 0, 1023, 6, 6);
Daten übertragen
transceive();
Reresh der LCD-Anzeige
startLCD1 = millis();
Wenn (startLCD1 - startLCD2 > 75)
{
refreshLCD();
startLCD2 = startLCD1;
}
}
void transceive() {}
Serial.println ("Start Transceiving");
unsigned long Started_tranceiving_at = micros();
Bool Erfolg = False;
myRadio.stopListening();
Wenn (! myRadio.write (& tData, sizeof(tData)))
{
Serial.println ("fehlgeschlagen!" "GG");
}
anderes
{
Serial.println ("Succes!: D");
myRadio.startListening();
Erfolg = True;
}
unsigned long Started_waiting_at = micros();
während (Erfolg)
{
Serial.println ("Waiting for Daniel");
Wenn (myRadio.available()) {}
Serial.println ("Daten Ontvangen...");
myRadio.read (& rData, sizeof(rData));
Erfolg = False;
}
Wenn (micros() - Started_waiting_at > 200000)
{
Serial.println ("Timeout erkannt!");
Erfolg = False;
zu brechen;
}
}
Serial.Print ("Total Zeit Tranceiving:");
Serial.println(Micros() - Started_tranceiving_at);
}
void refreshLCD() {}
/*
Variabelen:
Accu %
Snelheid
potkal
accumelding
*/
Wenn (tData.Kal! = Last_tData_Kal)
{
lcd.setCursor (12, 1);
LCD.Print("");
lcd.setCursor (12, 1);
LCD.Print(tData.Kal);
Last_tData_Kal = tData.Kal;
}
Wenn (rData.Serv! = Last_rData_Serv)
{
lcd.setCursor (12, 2);
LCD.Print("");
lcd.setCursor (12, 2);
LCD.Print (rData.Serv, 0);
LCD.Print("%");
Last_rData_Serv = rData.Serv;
}
Wenn (rData.snelheid! = Last_rData_snelheid)
{
lcd.setCursor (12, 3);
LCD.Print("");
lcd.setCursor (12, 3);
LCD.Print (rData.snelheid, 0);
LCD.Print ("km/h");
Last_rData_snelheid = rData.snelheid;
}
}------------------------------------------------------------------------------------------------------------
Zoals Ze Te Zien ist Hierboven Het Een Vrij Lange Code Maar Hierin Zijn 3 Dingen al in Verwerkt
Namelijk de Joystick Voor Het Bewegen, En 1 Knop. 1 Voor Het Schieten En 1 Voor Het resetten.
Maar Dit ist Alleen Het Verzenden Nog Maar.
Hieronder Het ontvangen
------------------------------------------------------------------------------------------------------------
/*
Einfache Übertragung Programm, Übertragung von Nummern ab
*
*
* Signal - Arduino pin
* GND 1 GND
* VCC 2 5V
* CE 3 8
* CSN 4 9
* SCK 5 13
* MOSI 6 11
* MISO 7 12
* IRQ 8-
*/
#include
#include
#include
#include
#include
Definieren Sie die CE und CSN-Pins
#define CE_PIN 8
#define CSN_PIN 9
Erstellen Sie neue Radio mit
RF24 MyRadio (CE_PIN, CSN_PIN);
Erstellen Sie Adresse für die Übertragung von 1 Weg
befasst sich mit Byte [] [6] = {"1Node", "2Node"};
Datastruct zu erhalten:
Struct DataStruct {}
Int X = 0; //joystick
Int Res = 0; //Reset
Int Schiet = 0; //Schiet
} RData;
Fahnen
Int Flag1 = 0;
Int Flag2 = 0;
Int Flag3 = 0;
Ausgänge
Int Res = A0;
Int Schiet = A1;
Int Rechts = A2;
Int Links = A3;
void setup() {}
Baudrate von 115200 serial Monitor verwenden
Serial.Begin(115200);
Delay(1000);
Serial.println ("RF24 senden Test");
PinMode (Res, OUTPUT);
PinMode (Schiet, OUTPUT);
PinMode (Rechts, OUTPUT);
PinMode (Links, OUTPUT);
Kommunikation:
Das Radio starten
myRadio.begin();
Eingestellten Kanal über WLAN-Kanäle
myRadio.setChannel(108);
Funkverbindung einrichten:
myRadio.setPALevel(RF24_PA_MIN);
myRadio.openWritingPipe(addresses[1]);
myRadio.openReadingPipe(1,addresses[0]);
Delay(1000);
myRadio.startListening();
}
void loop() {}
myRadio.read (& RData, sizeof(RData));
If(Flag1 = 0) {}
myRadio.read (& RData, sizeof(RData));
If(RData.X == 1)
{
Serial.Print("rechts");
AnalogWrite (Rechts, hoch);
Flag1 = 1;
}
anderes if(RData.X == 2)
{
Serial.Print("Links");
AnalogWrite ("Links", hoch);
Flag1 = 1;
}
}
If(RData.X == 0)
{
Serial.Print("Stilstaan");
Flag1 = 0;
}
If(Flag2 = 0) {}
If(RData.res = 1)
{
Serial.Print("Reset");
AnalogWrite (Res, HIGH);
Flag2 = 1;
}
}
If(RData.res = 0) {}
Flag2 = 0;
}
If(Flag3 = 0) {}
If(RData.Schiet == 1)
{
Serial.Print("Schiet");
analogWrite(Schiet, HIGH);
Flag3 = 1;
}
}
If(RData.Schiet = 0) {}
Flag3 = 0;
}
}
De Code Hierboven Spreekt best Wel Voor Zich Eigenlijk. Als de Ontvanger Dingen Binnenkrijgt Dan Geeft Hij Simpelweg Een Pin Hoog Aan de Hiermee kan Een Sue Aangegeven Worden. In Ons Geval Wort äh Op Een Andere Arduino Een Ledmatrix Aangestuurd Om Te Schieten Heen En weer Te Bewegen von de Spiel Te Resetten.