Codes samen voegen

Arduino specifieke Software
Gebruikers-avatar
Berichten: 42
Geregistreerd: 13 Dec 2015, 20:26
Woonplaats: Gemeente Westland

Codes samen voegen

Berichtdoor Hardruino » 28 Jan 2016, 23:30

Beste forum,

wie kan mij helpen door de drie bijgevoegde codes aan te passen en samen te voegen tot één code voor de Zender
en één code voor de Ontvanger.
Ik krijg het zelf niet voor elkaar.
In de zender code moet als Beep() (D4) wordt aangeroepen er op de ontvanger een relais wordt bekrachtigt.
Dus eenrichting verkeer.

alvast vreselijk bedankt.

Zender ----------------------------------------------------------------------
cpp code
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>

#include <SPI.h>

int msg[1];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int SW1 = 7;
void setup(void){
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);}
void loop(void){
if (digitalRead(SW1) == HIGH){
msg[0] = 111;
radio.write(msg, 1);}}

Ontvanger---------------------------------------------------
cpp code
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>


int msg[1];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int LED1 = 3;

void setup(void){

Serial.begin(9600);

radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();

pinMode(LED1, OUTPUT);
}

void loop(void){
if (radio.available()){
bool done = false;
while (!done){
done = radio.read(msg, 1);
Serial.println(msg[0]);

if (msg[0] == 111){delay(10);digitalWrite(LED1, HIGH);}
if (msg[0] == 222){delay(10);digitalWrite(LED1, LOW);}

delay(10);}
}
else { Serial.println("No radio available"); }

}


Project01------------------------------------------------------------
cpp code
#include <Button.h>

#define KEUZE_KNOP A0 // A0 pin voor Keuzeknop
#define led1 A1 // A1 pin voor led stand1
#define led2 A2 // A2 pin voor led stand2
#define led3 A3 // A3 pin voor led stand3
#define led4 A4 // A4 pin voor led stand4
#define roodled A5 // A5 pin voor rode Led
#define startknop 2 // D2 pin voor startknop
#define groenled 3 // D3 pin voor groene Led
#define buzzer 4 // D4 pin naar busser
#define audio 5 // D5 pin voor audio output (koptelefoon)

int keuze, knop;
int toonhoogte = 450; //frequentie van audio output

Button keuzeknop = Button(KEUZE_KNOP, PULLUP);

void setup() {
keuze = 1;
pinMode(startknop,INPUT_PULLUP);
pinMode(buzzer,OUTPUT);
pinMode(groenled,OUTPUT);
pinMode(roodled,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(audio,OUTPUT);
digitalWrite(buzzer,LOW);
digitalWrite(groenled,LOW);
digitalWrite(roodled,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
}

void loop() {
digitalWrite(groenled,HIGH);

if (keuzeknop.uniquePress()){
keuze++;

if (keuze >4)
keuze = 1 ;
}
switch(keuze){
case 1:{
clearleds();
digitalWrite(led1,HIGH);

break;
case 2:
clearleds();
digitalWrite(led2,HIGH);
break;
case 3:
clearleds();
digitalWrite(led3,HIGH);
break;
case 4:
clearleds();
digitalWrite(led4,HIGH);
break;
} }

knop = digitalRead(startknop);
if (knop == 0){
startsequence();
}}

void startsequence(){
switch(keuze) {
case 1:
digitalWrite(groenled,LOW);
clearleds();
digitalWrite(roodled,HIGH);
delay(3000);
beep();
delay(14000);
beep();
digitalWrite(roodled,LOW);
clearleds();
break;

case 2:
digitalWrite(groenled,LOW);
clearleds();
digitalWrite(roodled,HIGH);
delay(3000);
beep();
delay(9000);
beep();
digitalWrite(roodled,LOW);
clearleds();
break;

case 3:
digitalWrite(groenled,LOW);
clearleds();
digitalWrite(roodled,HIGH);
delay(3000);
beep();
delay(2000);
beep();
delay(2000);
beep();
delay(2000);
beep();
delay(2000);
beep();
delay(2000);
beep();
digitalWrite(roodled,LOW);
clearleds();
break;

case 4:
digitalWrite(groenled,LOW);
clearleds();
digitalWrite(roodled,HIGH);
delay(3000);
beep();
delay(5000);
beep();
digitalWrite(roodled,LOW);
clearleds();
break;
}
}


// Buzzer is aan gedurende 1 seconde
void beep(){
digitalWrite(buzzer,HIGH);
tone(audio,toonhoogte);
delay(400);
digitalWrite(buzzer,LOW);
noTone(audio);
}

// Clear Led's
void clearleds()
{ digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
}
Zou ik de weg weten zal ik nooit verdwalen.

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Codes samen voegen

Berichtdoor nicoverduin » 29 Jan 2016, 21:10

Is de ontvanger alleen maar die receiver code? En hoeft de rest van dat project er niet bij?
Overigens bijgaand een paar routines van een project dat ik 2 jaar geleden heb gedaan:
cpp code
/************************************* nRF24L01 ROUTINES ************************************************
/**
* @name setupRF24()
* setup the nRF24l01 module
*/
void setupRF24() {
//
// setup the nRF24L01 module
//
printf_begin();
radio.begin(); // Enable the RF24
radio.setDataRate(RF24_250KBPS); // transmission rate 250K-bps
radio.setPALevel(RF24_PA_MAX); // set transmitter to maximum level
radio.setChannel(RF24_CHANNEL); // use channel
radio.enableDynamicPayloads(); // enable dynamic message sizes
radio.setRetries(0, 0); // set the maximum number of retries and duration
radio.setCRCLength(RF24_CRC_16); // 16 bit CRC is used
radio.setAutoAck(false); // we have to do ou own handshaking as we need more than 6 devices to control

//
// create the message pipes
//
radio.openWritingPipe(pipes[0]); // pipe zero for sending
radio.openReadingPipe(1, pipes[1]); // one pipe for receiving
//
// start executing
//
radio.startListening(); // go into listen mode
radio.printDetails(); // show the details on the serial
delay(500);

}

/**
* @name nRF_receive()
* receives the characters from the radio and puts them into the buffer
*/
void nRF_receive(void) {
int len = 0;
//
// check if there is any data
//
if (radio.available()) {
bool done = false;
while (!done) {
//
// get the length of the payload
//
len = radio.getDynamicPayloadSize();
//
// and copy the data into the buffer
//
done = radio.read(&RecvPayload, len);
//
// wait 5 milli seconds
//
delay(5);
}
RecvPayload[len] = 0; // null terminate string
//
// and clear our buffer
//
RecvPayload[0] = 0; // Clear the buffers
}

}
/**
* @name serial_receive
*/
void serial_receive(void) {
//
// check if we have something to send
//
if (stringComplete) {
//
// yes so add the typed input into the send buffer
//
strcat(SendPayload, serialBuffer);
//
// swap TX & Rx addr for writing
//
radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(0, pipes[0]);
//
// go into transmit mode
//
radio.stopListening();
//
// and send transmit the message
//
bool ok = radio.write(&SendPayload, strlen(SendPayload));
//
// we are done
//
stringComplete = false;
//
// restore TX & Rx addr for reading
//
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1, pipes[1]);
//
// and go back into listening mode
//
radio.startListening();
//
// clear buffer
//
SendPayload[0] = 0;
dataBufferIndex = 0;
}
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 109
Geregistreerd: 05 Dec 2014, 22:09

Re: Codes samen voegen

Berichtdoor Palumbus » 30 Jan 2016, 17:47

Met mijn nrf24 projectjes heb ik me er heel makkelijk vanaf gemaakt door gebruik te maken van de librarys van tmrh20
Zie http://tmrh20.github.io

Scheelde heel veel code. Zeker met de mesh functionaliteit

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Codes samen voegen

Berichtdoor nicoverduin » 31 Jan 2016, 10:51

Ik heb toen (eind 2013) toen nog gebruik gemaakt van de libs van maniacbug gebruik gemaakt. Zo zie je maar weer hoe dat weer verder is verbeterd.
Maar eerst maar eens kijken wat de TS voor antwoord geeft op mijn vragen. Dit zou nog wel eens een brug te ver kunnen zijn op dit moment
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 42
Geregistreerd: 13 Dec 2015, 20:26
Woonplaats: Gemeente Westland

Re: Codes samen voegen

Berichtdoor Hardruino » 31 Jan 2016, 18:03

Bedankt voor de reacties.

ik begrijp de vraag van Nico niet helemaal denk.

Ik wil dus 1 code voor de zender hebben en 1 voor de ontvanger.
In het bedieningskastje moet dus nog een zender, nRF24L01+ (ik denk dat het dit model is), gemonteerd en aangesloten op de Arduino Nano.
De software is de software die ik heb gepost.
Daar moet dus nog een aanpassing in gedaan worden.

De ontvanger is ook een Nano maar hoeft alleen maar een relais te schakelen op het moment dat Beep () ((D4)) Hoog is.

Ik hoop dat dit duidelijk genoeg is.
Nico heeft wel gelijk als hij zegt dat de lat voor mij niet te hoog mag liggen.
Alleen met knippen en plakken en met Jip en Janneke taal kan ik verder komen.
Steeds leer ik er weer een stukje bij.
Ik ben ook erg enthousiast over de mogelijkheden met Arduino en heb er een liefhebberij bij.
Ik hoop dat mijn projectje tot een goed einde kan brengen met behulp van dit forum.

Met vr. gr. Harry.
Zou ik de weg weten zal ik nooit verdwalen.

Gebruikers-avatar
Berichten: 42
Geregistreerd: 13 Dec 2015, 20:26
Woonplaats: Gemeente Westland

Re: Codes samen voegen

Berichtdoor Hardruino » 04 Feb 2016, 20:02

Kan iemand mij verder helpen a.u.b.
Na de laatste reactie van nicoverduin heb ik niets meer vernomen.

gr. Harry.
Zou ik de weg weten zal ik nooit verdwalen.

Berichten: 4068
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Codes samen voegen

Berichtdoor shooter » 10 Feb 2016, 10:20

sorry wij dachten dor de hoeveelheid code dat je wel een antwoord had.
er zijn dus een zendercode met als toevoeging de drukknoppen en een ontvanger met ledjes.
dus 2 hele progs, zet die hier neer dan kijken we verder.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 42
Geregistreerd: 13 Dec 2015, 20:26
Woonplaats: Gemeente Westland

Re: Codes samen voegen

Berichtdoor Hardruino » 10 Feb 2016, 11:00

Voor de duidelijkheid;
Ik heb dus een kastje waarin een zender zit (moet komen) met een code.
Deze code moet worden aangepast met de codes voor een zender module nRF24L01+.
Dus ergens tussenvoegen in de bestaande code geplaatst.

Mijn tweede kastje is slechts een kastje met een ontvanger nRF24L01+ en een 5 volt relais,
welke moet worden aangestuurd door het programma dat loopt op kastje 1. (zie onderstaande code)

Alleen, als de code van kastje 1 bij de Beep() komt moet het relais worden bekrachtigt.
Dus bij iedere Beep() in het programma van kastje 1, moet het relais van kastje 2 worden bekrachtigt en na circa 0,5 sec weer afvallen.

Hieronder staat slechts 1 code.
Dit is de code van kastje 1.
Ik heb denk 2 codes nodig. (ook voor kastje 2) Maar dat weet ik niet zeker.

Ik hoor graag van jullie.
Groet, Harry M.

Project01------------------------------------------------------------
cpp code
#include <Button.h>

#define KEUZE_KNOP A0 // A0 pin voor Keuzeknop
#define led1 A1 // A1 pin voor led stand1
#define led2 A2 // A2 pin voor led stand2
#define led3 A3 // A3 pin voor led stand3
#define led4 A4 // A4 pin voor led stand4
#define roodled A5 // A5 pin voor rode Led
#define startknop 2 // D2 pin voor startknop
#define groenled 3 // D3 pin voor groene Led
#define buzzer 4 // D4 pin naar busser
#define audio 5 // D5 pin voor audio output (koptelefoon)

int keuze, knop;
int toonhoogte = 450; //frequentie van audio output

Button keuzeknop = Button(KEUZE_KNOP, PULLUP);

void setup() {
keuze = 1;
pinMode(startknop,INPUT_PULLUP);
pinMode(buzzer,OUTPUT);
pinMode(groenled,OUTPUT);
pinMode(roodled,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(audio,OUTPUT);
digitalWrite(buzzer,LOW);
digitalWrite(groenled,LOW);
digitalWrite(roodled,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
}

void loop() {
digitalWrite(groenled,HIGH);

if (keuzeknop.uniquePress()){
keuze++;

if (keuze >4)
keuze = 1 ;
}
switch(keuze){
case 1:{
clearleds();
digitalWrite(led1,HIGH);

break;
case 2:
clearleds();
digitalWrite(led2,HIGH);
break;
case 3:
clearleds();
digitalWrite(led3,HIGH);
break;
case 4:
clearleds();
digitalWrite(led4,HIGH);
break;
} }

knop = digitalRead(startknop);
if (knop == 0){
startsequence();
}}

void startsequence(){
switch(keuze) {
case 1:
digitalWrite(groenled,LOW);
clearleds();
digitalWrite(roodled,HIGH);
delay(3000);
beep();
delay(14000);
beep();
digitalWrite(roodled,LOW);
clearleds();
break;

case 2:
digitalWrite(groenled,LOW);
clearleds();
digitalWrite(roodled,HIGH);
delay(3000);
beep();
delay(9000);
beep();
digitalWrite(roodled,LOW);
clearleds();
break;

case 3:
digitalWrite(groenled,LOW);
clearleds();
digitalWrite(roodled,HIGH);
delay(3000);
beep();
delay(2000);
beep();
delay(2000);
beep();
delay(2000);
beep();
delay(2000);
beep();
delay(2000);
beep();
digitalWrite(roodled,LOW);
clearleds();
break;

case 4:
digitalWrite(groenled,LOW);
clearleds();
digitalWrite(roodled,HIGH);
delay(3000);
beep();
delay(5000);
beep();
digitalWrite(roodled,LOW);
clearleds();
break;
}
}


// Buzzer is aan gedurende 1 seconde
void beep(){
digitalWrite(buzzer,HIGH);
tone(audio,toonhoogte);
delay(400);
digitalWrite(buzzer,LOW);
noTone(audio);
}

// Clear Led's
void clearleds()
{ digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
}
Zou ik de weg weten zal ik nooit verdwalen.

Berichten: 4068
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Codes samen voegen

Berichtdoor shooter » 11 Feb 2016, 12:31

zender
en de ontvanger doe je op dezelfde manier.
cpp code
#include <Button.h>

#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>

#include <SPI.h>

int msg[1];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int SW1 = 7;



#define KEUZE_KNOP A0 // A0 pin voor Keuzeknop
#define led1 A1 // A1 pin voor led stand1
#define led2 A2 // A2 pin voor led stand2
#define led3 A3 // A3 pin voor led stand3
#define led4 A4 // A4 pin voor led stand4
#define roodled A5 // A5 pin voor rode Led
#define startknop 2 // D2 pin voor startknop
#define groenled 3 // D3 pin voor groene Led
#define buzzer 4 // D4 pin naar busser
#define audio 5 // D5 pin voor audio output (koptelefoon)

int keuze, knop;
int toonhoogte = 450; //frequentie van audio output

Button keuzeknop = Button(KEUZE_KNOP, PULLUP);

void setup() {
setupradio();
// onderstaand kun je dus ook in een functie stoppen(mag je zelf doen)

keuze = 1;
pinMode(startknop,INPUT_PULLUP);
pinMode(buzzer,OUTPUT);
pinMode(groenled,OUTPUT);
pinMode(roodled,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(audio,OUTPUT);
digitalWrite(buzzer,LOW);
digitalWrite(groenled,LOW);
digitalWrite(roodled,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
}

void loop() {
loopradio();
digitalWrite(groenled,HIGH);

if (keuzeknop.uniquePress()){
keuze++;

if (keuze >4)
keuze = 1 ;
}
switch(keuze){
case 1:{
clearleds();
digitalWrite(led1,HIGH);

break;
case 2:
clearleds();
digitalWrite(led2,HIGH);
break;
case 3:
clearleds();
digitalWrite(led3,HIGH);
break;
case 4:
clearleds();
digitalWrite(led4,HIGH);
break;
} }

knop = digitalRead(startknop);
if (knop == 0){
startsequence();
}}

void startsequence(){
switch(keuze) {
case 1:
digitalWrite(groenled,LOW);
clearleds();
digitalWrite(roodled,HIGH);
delay(3000);
beep();
delay(14000);
beep();
digitalWrite(roodled,LOW);
clearleds();
break;

case 2:
digitalWrite(groenled,LOW);
clearleds();
digitalWrite(roodled,HIGH);
delay(3000);
beep();
delay(9000);
beep();
digitalWrite(roodled,LOW);
clearleds();
break;

case 3:
digitalWrite(groenled,LOW);
clearleds();
digitalWrite(roodled,HIGH);
delay(3000);
beep();
delay(2000);
beep();
delay(2000);
beep();
delay(2000);
beep();
delay(2000);
beep();
delay(2000);
beep();
digitalWrite(roodled,LOW);
clearleds();
break;

case 4:
digitalWrite(groenled,LOW);
clearleds();
digitalWrite(roodled,HIGH);
delay(3000);
beep();
delay(5000);
beep();
digitalWrite(roodled,LOW);
clearleds();
break;
}
}


// Buzzer is aan gedurende 1 seconde
void beep(){
digitalWrite(buzzer,HIGH);
tone(audio,toonhoogte);
delay(400);
digitalWrite(buzzer,LOW);
noTone(audio);
}

// Clear Led's
void clearleds()
{ digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
}
void setupradio(void){
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);}
void loopradio(void){
if (digitalRead(SW1) == HIGH){
msg[0] = 111;
radio.write(msg, 1);}}
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 42
Geregistreerd: 13 Dec 2015, 20:26
Woonplaats: Gemeente Westland

Re: Codes samen voegen

Berichtdoor Hardruino » 11 Feb 2016, 17:13

sorry sorry, maar ik begrijp niet wat je bedoeld met; "// onderstaand kun je dus ook in een functie stoppen(mag je zelf doen)"

Ik zal wel uit een ei komen of zoiets maar ik kom zo niet verder.
Bedoeling is; als de Beep() Hoog is moet i.p.v. een Beep, een relais bij de ontvanger worden bekrachtigt.
Dus ik mis een stukje??
Ik heb op twee breadboards dezelfde opstelling gemaakt.
Echter nog zonder relais op de ontvangende kant.
Het relais kom wel, als ik eerst maar zie dat bij de BEEP op de zender, er iets gebeurd bij de ontvanger.
b.v. een led aan en uit laten gaan.
Help mij a.u.b. verder.


Groet, Harry.
Zou ik de weg weten zal ik nooit verdwalen.

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 12 gasten