Draadloze Controller (3 / 4 schritt)

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.

In Verbindung stehende Artikel

Bluetooth-Fan Speed Controller

Bluetooth-Fan Speed Controller

Hast du immer alles schön und gemütlich in Ihrem Sitz, eingewickelt in decken bereit für Netflix, nur um Sie den Lüfter auf Links zu realisieren? Eine warme Nacht nur um geweckt zu werden, durch das Einfrieren Wind im Umlauf Ihr Schlafzimmer Einschal
Model Rocket Launch Controller hinzugefügt Power Tool-Akku-Ladegerät

Model Rocket Launch Controller hinzugefügt Power Tool-Akku-Ladegerät

Zusammenfassung: Dieses Projekt verwendet eine Handvoll von elektronischen Bauteilen und relativ einfache Schaltung um ein Power Tool Akku Ladegerät funktioniert auch als ein Modell Rakete Produkteinführung einschlossenr. wichtiger ist zu ändern, das
Arcade-MIDI-Controller

Arcade-MIDI-Controller

Ich bin sicher, dass Sie diese coole Videos von Menschen jamming auf einem Rechner mit einer Reihe von Tasten drauf gesehen haben. Nun, heute, zeigen ich Sie wie Sie eine Box zu machen mit der man Marmelade machen können. < Inspiriert von der MIDI-Fi
DIY transkribieren Controller

DIY transkribieren Controller

HalloWir sind eine Gruppe von Studenten an der Universität Gent für unseren Kurs der Mitgestaltung mussten wir ein Projekt in Zusammenarbeit mit einer behinderten Person zu tun. Inge wurde uns eine junge Frau zugeordnet, die vom Fuß bis zum Handgelen
Erschwinglichen Keyboard Encoder und Divekick Controller

Erschwinglichen Keyboard Encoder und Divekick Controller

Jeder, der Divekick gespielt hat kennt Markman Controller: zwei extrem langlebig Tasten, die eine Verwechslung für einen neuen Spieler zu beseitigen. Ich habe Divekick gespielt, mit Leuten aus Alter elf bis fünfzig, und mit einem 360 Controller mit T
PS3 Controller Vibration LEDs (+ Taste Fehlzündung Fix)

PS3 Controller Vibration LEDs (+ Taste Fehlzündung Fix)

Wenn dein PS3-System ab ca. 4-5 Jahren zu schieben, sind Ihre Controller passend, Fehlverhalten zu starten; Schaltflächen starten auf mysteriöse Weise drängen sich oder einander schieben, und manchmal werden hartnäckig weigern, eine Presse überhaupt
Xbox 1 Controller Organizer

Xbox 1 Controller Organizer

Meine Frau war müde von Xbox-Controller ganz über dem Platz und ich war müde, nie in der Lage, einen Controller für Spielzeit zu finden. Ich entwarf eine Box mit Aussparungen, die die Xbox One Controller perfekt in schieben wird... und schön aussehen
Speed Controller für billige Roboter, Teil 2: PID-Regler

Speed Controller für billige Roboter, Teil 2: PID-Regler

Hallöchen! Dies ist Teil zwei eines zweiteiligen Tutorial wie man einen Drehzahlregler aus einer Flasche Kappe und Stift Feder machen! Wenn Sie noch nicht, check it out! Wenn es Ihnen gefällt, beachten Sie bitte, Stimmen für mich in der Sensoren-Wett
Speed Controller für billige Roboter, Teil 1: Drehgeber

Speed Controller für billige Roboter, Teil 1: Drehgeber

Können Sie sagen, warum ich für dieses Projekt aufgeregt gewesen? Wissen Sie, wie ernst das ist cool ?"Nein, Jay" Höre ich Sie sagen, Seufzen, wie man sich für einen anderen Stärken Erklärung begeistert. "Warum nicht Sie es uns erklären?&qu
GameCube-Controller Wiimote

GameCube-Controller Wiimote

Zweite Instructable. Lassen Sie mich wissen, wenn etwas repariert werden muss.Ich habe nicht die Schaltung oder das Programm machen. Ich mache gerade eine Anleitung, die Schritt für Schritt Montage wie ein Gamecube Controller Wiimote machen zeigt.Die
DC-Motor-Controller

DC-Motor-Controller

Diese einfache DC-motor-Controller ermöglicht eine Richtung Motorsteuerung und aufgearbeiteten elektrische Teile entstanden. Mit MOSFET für Motorsteuerung anstelle von Kontrolle-Chips, ermöglicht eine externe Stromversorgung und elektrische Isolierun
Gewusst wie: ändern Sie alle Tasten, Triggern und Joysticks auf eine Xbox 360 Wireless Controller

Gewusst wie: ändern Sie alle Tasten, Triggern und Joysticks auf eine Xbox 360 Wireless Controller

diese instructable lernen Sie, wie Ihre ganz eigenen custom Xbox 360-Controller zu machen. Dieses Projekt könnte ein bisschen schwierig und frustrierend manchmal sein, aber wenn Sie dabei bleiben, Ihren Controller werden die besten auf dem Block.Schr
Machen einen PWM Motor Speed Controller

Machen einen PWM Motor Speed Controller

Mikrocontroller wie Arduinos sind eine großartige Möglichkeit, Ihre kundenspezifische Elektronikprojekte zu steuern. Leider die digitale Stifte haben eine max. Leistung von 40mA, und das ist nicht genug, die meisten Motoren anzutreiben. Dies ist, wo
Hausgemachte 100 HP Motor Controller für ein Elektroauto

Hausgemachte 100 HP Motor Controller für ein Elektroauto

diese instructable erläutert, wie Sie Ihre eigenen 100 PS (Spitze) motor-Controller für den Einsatz in einem elektrischen Auto oder Motorrad Umbau zu bauen.  Es kann dauern, jede Spannung von bis zu 144v, und der Spitzenstrom ist 500 Ampere.  Die Kos