Draadloze Controller (3 / 4 steg)

Steg 3: De koden



Het programmeren van de 2,4 Ghz verzender sv ontvanger är eigenlijk häl makkelijk vill er zijn meerdere bibliotek te vinden om dat voor elkaar te krijgen.

Het verzenden:

/*----------------------------------------------------
Programma om de variabelen mig te zenden vanaf de controller sv ontvangen naar de controller.

av: Dave den Haan

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-
De eerste rij är de volgorde van de pinnen op de NRF24L01 sv de rij ernaast är waaraan het moet verbinden i arduino

-------------------------------------------------------*/
#include
#include
#include
#include
#include
#include

Definiera CE och CSN stift så att de kan ändras lätt senare om det behövs.
#define CE_PIN 8
#define CSN_PIN 9

Skapa en ny radio med CE & CSN Pins
RF24 myRadio (CE_PIN, CSN_PIN);

Skapa adress för sändande och mottagande
byte adresser [] [6] = {"1Node", "2Node"};

LCD-adress LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, positiva);

Lägga till joystick & potmeter
CONST int JS_Y = A2; CONST int JS_X = A1; CONST int potkal = A3;

Lägg till datastruct om du vill spara överförda/fått värden struct dataStruct {int Y; int Kal; int X;} tData;

struct dataStruct2 {
float Serv; flyta snelheid = 0.00; } rData;

osignerade långa startLCD1 = 0; osignerade långa startLCD2 = 0;

int last_tData_Y; int last_tData_Kal = 16. float last_rData_Serv; flyta last_rData_snelheid = 200.

void transceive();
void rereshLCD();

void setup() {

Använd den seriella bildskärmen på baudvärde för 115200 Serial.begin(115200); Delay(250); Serial.println ("trådlöst överföra");

Starta radion
myRadio.begin();

Ställa in wifi kanal ovanför de flesta normala wifi kanaler
myRadio.setChannel(108);

PA nivå, välja vilket som ska användas. Låg, hög för testning med hjälp
myRadio.setPALevel(RF24_PA_MIN);
myRadio.setPALevel(RF24_PA_MAX);

Öppna läsa och skriva rör.
myRadio.openWritingPipe(addresses[0]);
myRadio.openReadingPipe (1, addresses[1]);
Delay(500);

Ställ in LCD

LCD.BEGIN (20, 4); LCD.Print (kolumn, linje)
lcd.setCursor (2, 0);
LCD.Print ("Wireless racerbil");
lcd.setCursor (6, 1);
LCD.Print ("från");
lcd.setCursor (3, 2);
LCD.Print ("Groep 4--SCS")

Initiera pinmodes
pinMode (JS_Y, indata);
pinMode (JS_X, indata);
pinMode (potkal, ingång);

Delay(3000);

LCD.Clear();

Ställa in LCD-skärm

lcd.setCursor (2, 0);

LCD.Print ("Wireless racerbil:");

lcd.setCursor (0, 1);

LCD.Print ("Kalibratie:");

lcd.setCursor (5, 2);

LCD.Print ("Accu %:");

lcd.setCursor (2, 3);

LCD.Print ("Snelheid:");

}

void loop() {

/*

Läs potvalue

Skicka värdet

*/

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);

Överföra data

transceive();

Reresh LCD

startLCD1 = millis();

om (startLCD1 - startLCD2 > 75)

{

refreshLCD();

startLCD2 = startLCD1;

}

}

void transceive() {

Serial.println ("starta transceiving");

osignerade långa started_tranceiving_at = micros();

bool succé = false;

myRadio.stopListening();

om (! myRadio.write (& tData, sizeof(tData)))

{

Serial.println ("misslyckades! GG");

}

annat

{

Serial.println ("succé!: D");

myRadio.startListening();

Succé = sant;

}

osignerade långa started_waiting_at = micros();

medan (framgång)

{

Serial.println ("väntar Daniel");

om (myRadio.available()) {

Serial.println ("Data ontvangen...");

myRadio.read (& rData, sizeof(rData));

Succé = false;

}

om (micros() - started_waiting_at > 200000)

{

Serial.println ("Timeout upptäckt!");

Succé = false;

bryta;

}

}

Serial.Print ("Total tid tranceiving:");

Serial.println(Micros() - started_tranceiving_at);

}

void refreshLCD() {

/*

Variabelen:

Accu %

Snelheid

potkal

accumelding

*/

om (tData.Kal! = last_tData_Kal)

{

lcd.setCursor (12, 1);

LCD.Print("");

lcd.setCursor (12, 1);

LCD.Print(tData.kal);

last_tData_Kal = tData.Kal;

}

om (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;

}

om (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 Lacke är hierboven är het een vrij lange kod maar hierin zijn 3 dingen al i verwerkt
namelijk de joystick voor het bewegen, en 1 knop. 1 voor het schieten en 1 voor het resetten.

Maar dit är alleen het verzenden nog maar.

Hieronder het ontvangen

------------------------------------------------------------------------------------------------------------

/*
Enkelt överföra program, överföring nummer börjar

*

*

* 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

Definiera CE och CSN Pins

#define CE_PIN 8

#define CSN_PIN 9

Skapa nya radio med

RF24 myRadio (CE_PIN, CSN_PIN);

Adress för 1 sätt sänder

byte adresser [] [6] = {"1Node", "2Node"};

Få datastruct:

struct dataStruct {

int X = 0; //joystick

int Res = 0; //Reset

int Schiet = 0; //Schiet

} RData;

Flaggor

int Företagsflagga 1 = 0;

int Flag2 = 0;

int Flag3 = 0;

Utgångar

int Res = A0;

int Schiet = A1;

int Rechts = A2;

int länkar = A3;

void setup() {

Använda följetong monitor på baudvärde för 115200

Serial.BEGIN(115200);

Delay(1000);

Serial.println ("RF24 skicka prov").

pinMode (Res, OUTPUT);

pinMode (Schiet, OUTPUT);

pinMode (Rechts, OUTPUT);

pinMode (länkar, OUTPUT);

Meddelande:

Starta radion

myRadio.begin();

Ställ in kanal över wifi kanaler

myRadio.setChannel(108);

Setup Radio anslutning:

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, hög);

Fälten Företagsflagga 1 = 1;

}

annat if(RData.X == 2)

{

Serial.Print("Links");

analogWrite (länkar, hög);

Fälten Företagsflagga 1 = 1;

}

}

IF(RData.X == 0)

{

Serial.Print("Stilstaan");

Fälten Företagsflagga 1 = 0;

}

IF(Flag2 = 0) {

IF(RData.res = 1)

{

Serial.Print("reset");

analogWrite (Res, hög);

Flag2 = 1;

}

}

IF(RData.res = 0) {

Flag2 = 0;

}

IF(Flag3 = 0) {

IF(RData.Schiet == 1)

{

Serial.Print("Schiet");

analogWrite (Schiet, hög);

Flag3 = 1;

}

}

IF(RData.Schiet = 0) {

Flag3 = 0;

}

}

De koden hierboven spreekt bästa wel voor zich eigenlijk. ALS de ontvanger dingen binnenkrijgt dan geeft hij simpelweg een pin hoog aan sv hiermee kan een vervolg aangegeven worden. I ons geval ord er op een andere arduino een ledmatrix aangestuurd om te schieten heen sv weer te bewegen av de spel te resetten.

Se Steg
Relaterade Ämnen

Camo Xbox Controller

Steg 1: Vad du behöver Silvertejp Razerblade A kvartalet en dime A controller och ta dig tid inte jäktaSteg 2: Placera bandet längs registeransvarige Få fina kanter med hjälp av styrenheter räfflaSteg 3:Steg 4: Använda små bitar om band och när du gö...

Automatisk tvättrum Light Controller krets

detta är en annan mycket användbar krets i vår verkliga livet heter Automatisk tvättrum Light Controller krets. Det hjälper oss i automatiskt slå på/av tvättrum lampor enligt situationen dvs om en person går in tvättrummet, lamporna kommer att slå oc...

Hemgjord 100 HP Motor Controller för en elbil

detta instructable förklarar hur du bygger din egen 100 Hästkrafter (topp) motor controller för användning i en elektrisk bil eller motorcykel konvertering. Det kan ta någon spänning upp till 144v toppströmmen är 500 ampere. Kostnaden för komponenter...

200kW AC Motor Controller för elektriska bil

Elbilar är framtiden, och börjar ta fart idag. Men är de fortfarande ganska dyrt. En 3 fas AC-motor är absolut standard för företag när de gör en elbil. Tesla Roadster, Nissan Leaf, etc... Alla de stora pojkarna använder AC. Den har ett antal fördela...

555 PWM Controller

Följande instruktioner är avsedda att vägleda montering av ett kit projekt du kan ha köpt från mig på ett Maker Faire eller att du sätta ihop själv här: komponenter och PCB.Syftet med detta projekt är att lära sig lite om Hobbyelektronik, lära dig nå...

En Wi-Fi baserat Controller för modelltåg, Halloween rekvisita, energi övervakning och mer!

Människor har blivit van vid att använda sina bärbara enheter för att utföra alla typer av saker från att titta på videor, spela spel, att hantera deras inköpslista. Men trots populariteten för dessa enheter, beslutsfattare, hackare och hobby har int...

Bluetooth SNES controller/gamepad

Hej där!BakgrundJag spelar en hel del emulatorer på min android-telefon men med touchcontrollers på själva telefonen är hemsk så jag beslutat att göra en Bluetooth controller jag kunde använda med min telefon!Anledningen till att jag inte kunde köpa...

Costumized controller

Wath tycker du behöver?1. en styrenhet (Ps, xbox eller något annat).2. Spray färg eller om du vill ha normal färg.3. slipa papper.4. kanske om du vill ha en stencil för färgen.5. en skruvmejsel.6. en skål för skruvarna (som du inte förlorar dem).7. o...

Remote Controller Safe

Har du någonsin undrat hur du kan relativt easly dölja din fickpengar från din lilla/större brother(s) eller helt enkelt har din lilla "Fort Knox"? Tja... med detta Instructable kommer du att kunna! Låt oss se vad du behöver!Verktyg:x1 Flathead...

Julljus fotocell Controller

Jag vet inte om ditt område, men i mitt område fotocell kontrollerade jul ljus styrenheter var:1) galet dyrt2) billigt kinesisk skit gjorda av plast.Här är hur man bygger en väderbeständigt controller i en solid metall låda som ska pågå du år relativ...

Automatiska persienner Controller (PICAXE)

vill bygga en motoriserade persienner Controller för ca $15,00? Här är hur. Jag tycker om att ha krukväxter växter och se dem växa, men att se till att de få tillräckligt ljus kan vara en utmaning. Jag har en bokhylla framför fönstret i mitt sovrum m...

B & Q homeeasy hemautomation centralvärme controller hacka

B & Q Homeeasy hemautomation centralvärme controller ModHej är detta ett billigare alternativ till standard hem lätt centralvärme styrenheten säljs av b & q.Jag skulle köpa ordentlig centralvärme controller H105 men fann det vara lite för dyrt och...

Egen byggt MIDI-Controller

Im in denna jnstructable i musikinstrument tävlingen, om du gillar det snälla rösta på mig cos jag skulle älska en ny synth! Som en elektronisk musik producent/artist, jag har samlat en hel del olika MIDI-controllers under åren men alltid funnit att...

Dub Cadet: Holografiska MIDI & LED-Controller för Arduino - del 1

Jag tror holografisk musikinstrument blir vardagsmat i framtiden, visar överallt från skolor (Skolverket), hem (på skoj), till media kontor (för kreativitet), och i musik studios (för produktion). Anledningen är enkel: den holografiska musikinstrumen...

Elektriska Funkatron: En gitarr-stil MIDI Drum Controller

detta är min post i musikinstrument challenge.Framtidens människa , slagverkaren för jazzband Bela Fleck och Flecktones , har en MIDI-baserade slagverk controller, kallas Synth-Axe Drumitar, som bärs som en gitarr men använder fingrar sensorer för sl...

Dual Channel Sous Vide Controller

Nyligen blev jag intresserad sous vide matlagning eftersom priset på kött har skjutit i höjden och jag vill få mest smak från varje ounce. Jag ansåg att bygga min egen att använda med en lerkruka potten men problemet är att jag älskar mina biffar kok...

40 x RGB LED-Controller med 8-bitars PWM och valbara mönster

Uppdatering: Den här domänkontrollanten har ersatts med de vida överlägsen 48 kanaler Mono / 16 kanal RGB LED-Controller, med USB-anslutning och ColorMotion kompatibilitet. Besök http://www.chromationsystems.com/48channled.html för information, länka...

48 kanaler Mono / 16 kanal RGB LED-Controller

48 kanaler Mono/16 kanal RGB LED Controller av Chromation system kan användas självständigt kontroll 48 grupper/kanaler (upp till 120ma per grupp av mono-färg lysdioder) eller 16 grupper/kanaler för gemensam anod RGB-lysdioder. Man använder 3 x TLC59...

8 kanal LED-Controller v.3

8 kanal LED-Controller v.3 från Chromation system, används för att styra 8 kanaler av lysdioder, med upp till 5 lysdioder parallellt per kanal. (100 ma per kanal) Det använder en PIC12F1822 och ett TPIC6C596 power logic skiftregister, med varje kanal...