arduino master en slave verbinding

Arduino specifieke Software
Berichten: 47
Geregistreerd: 24 Nov 2014, 19:47

arduino master en slave verbinding

Berichtdoor corolla_g6 » 01 Mrt 2016, 19:41

ik ben bezig om 2 arduino's te koppelen

nu heb ik de voorbeelden gebruikt die bij voorbeelden staan in de software. de koppeling werkt dan maar nu heb ik hem aangepast en wilt het niet werken.

mischien kan iemand mij even helpen?


master arduino

cpp code
#include <Wire.h>


boolean InputStatus;
int ByteReceived;

void setup() /****** SETUP: RUNS ONCE ******/
{
Serial.begin(9600);
Serial.println("--- Start Serial Monitor SEND_RCVE ---");
Serial.println(" Type in Box above, . ");
Serial.println("(Decimal)(Hex)(Character)");
Serial.println();
InputStatus = 0;
pinMode(13, OUTPUT);
}
//--(end setup )---

void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
if (Serial.available() > 0)
{
ByteReceived = Serial.read();
Wire.beginTransmission(8);
Serial.print(ByteReceived);
Serial.print(" ");
Serial.print(ByteReceived, HEX);
Serial.print(" ");
Serial.print(char(ByteReceived));
Wire.beginTransmission(8);


if(ByteReceived == '1') // Single Quote! This is a character.
{
Serial.print(" inputstatus ");
InputStatus = 1;
Wire.write(InputStatus);
digitalWrite(13, HIGH);
}

if(ByteReceived == '0')
{
InputStatus = 0;
Serial.print(" inputstatus ");
Wire.write(InputStatus);
digitalWrite(13, LOW);
}

Serial.println(); // End the line


}
else
{
Wire.endTransmission();
}


}


slave arduino

cpp code
#include <Wire.h>

boolean InputStatus;

void setup() {
Wire.begin(8); // join i2c bus with address #8
Wire.onReceive(receiveEvent); // register event
Serial.begin(9600); // start serial for output
pinMode(13, OUTPUT);
}

void loop()
{
if (InputStatus)
{
digitalWrite(13, LOW);
}
else
{
digitalWrite(13, HIGH);
}

delay(100);
}

// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany) {
while (1 < Wire.available()) { // loop through all but the last
char InputStatus = Wire.read(); // receive byte as a character
Serial.print(InputStatus); // print the character
}
int InputStatus = Wire.read(); // receive byte as an integer
Serial.println(InputStatus); // print the integer
}

Advertisement

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

Re: arduino master en slave verbinding

Berichtdoor nicoverduin » 01 Mrt 2016, 20:50

Welke voorbeelden heb je gebruikt?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 47
Geregistreerd: 24 Nov 2014, 19:47

Re: arduino master en slave verbinding

Berichtdoor corolla_g6 » 01 Mrt 2016, 23:51

master write en slave read.

ik heb ook op internet gevonden hoe ik met de seriele monitor een commando kan versturen, dit heb ik dan gecombineerd met master write

hij verandert nu wel bij de master het signaal inputstatus, en het ledje op de arduino doet het ook

uiteraard ook eerst getest met de basic master write en slave read en dit werkte ook dus het is goed aangesloten

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

Re: arduino master en slave verbinding

Berichtdoor nicoverduin » 02 Mrt 2016, 00:37

Probeer dit 's
cpp code
#include <Wire.h>

boolean InputStatus;
int ByteReceived;

void setup() /****** SETUP: RUNS ONCE ******/
{
Serial.begin(9600);
Serial.println("--- Start Serial Monitor SEND_RCVE ---");
Serial.println(" Type in Box above, . ");
Serial.println("(Decimal)(Hex)(Character)");
Serial.println();
InputStatus = 0;
pinMode(13, OUTPUT);
}
//--(end setup )---

void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
//
// kijk of er iets op de serial staat
//
if (Serial.available() > 0) {
ByteReceived = Serial.read();
Serial.print(ByteReceived);
Serial.print(" ");
Serial.print(ByteReceived, HEX);
Serial.print(" ");
Serial.print(char(ByteReceived));
//
// kijk of het een 1 of 0 is
//
if (ByteReceived == '1') // Single Quote! This is a character.
{
InputStatus = 1;
}

if (ByteReceived == '0') {
InputStatus = 0;
}
//
// indien er iets verzonden moet worden dan nu doen
//
if (inputStatus == 0 || inputStatus == 1) {
//
// via I2C versturen
//
Wire.beginTransmission(8);
Wire.write(inputStatus);
Wire.endTransmission();
//
// en als je ook nog naar de serial wil schrijven
//
Serial.print(" inputstatus ");
Serial.println(inputStatus);
}
}
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 47
Geregistreerd: 24 Nov 2014, 19:47

Re: arduino master en slave verbinding

Berichtdoor corolla_g6 » 02 Mrt 2016, 08:51

hallo nico

bedankt voor je hulp, ik heb het geprobeerd maar het werkt nog niet, de master ''reageert'' hetzelfde alleen nu ik jou sketch zie snap ik wat je heb gedaan en dit lijkt mij beter te werken, ik wist niet dat je if (inputStatus == 0 || inputStatus == 1) { kon doen...

maar nu de slave kant, deze reageert nog niet. helaas kan je niet tegelijk 2x serieel monitor starten? dus ik kan hem niet uitlezen wat hij doet

ik heb nu dit gemaakt maar hij zegt dat ''receiveEvent was not declared in this scope'' ik weet even niet wat ik fout heb gedaan volgens mij zit het hem in de { }?

cpp code
#include <Wire.h>

boolean InputStatus;
//char InputStatus;

//InputStatusRead InputStatus; // vergelijking maken dat ze hetzelfde zijn?

void setup() {
Wire.begin(8); // join i2c bus with address #8
Wire.onReceive(receiveEvent); // register event
Serial.begin(9600); // start serial for output
pinMode(13, OUTPUT);
InputStatus = 0;
}

void loop(){
{

if (InputStatus = 1)
{
digitalWrite(13, LOW);
}
else (InputStatus = 0)
{
digitalWrite(13, HIGH);
}

delay(100);
}



void receiveEvent(int howMany) {
while (1 < Wire.available())

{
InputStatus = Wire.read(); // receive byte as a character
Serial.print(InputStatus); // print the character
}


}
}

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

Re: arduino master en slave verbinding

Berichtdoor nicoverduin » 02 Mrt 2016, 09:25

Dat komt omdat je nogal wat fouten in je code heb zitten:
a) if vergeten
b) = moet == zijn bij het testen
c) accolades kloppen niet

Je doet er goed aan om af en toe je source te formatteren in de IDE. Dan springt de code netjes in

cpp code
#include <Wire.h>

boolean InputStatus;
//char InputStatus;

//InputStatusRead InputStatus; // vergelijking maken dat ze hetzelfde zijn?

void setup() {
Wire.begin(8); // join i2c bus with address #8
Wire.onReceive(receiveEvent); // register event
Serial.begin(9600); // start serial for output
pinMode(13, OUTPUT);
InputStatus = 0;
}

void loop() {

if (InputStatus == 1) {
digitalWrite(13, LOW);
}
if (InputStatus == 0) {
digitalWrite(13, HIGH);
}

delay(100);
}

void receiveEvent(int howMany) {
while (1 < Wire.available())
{
InputStatus = Wire.read(); // receive byte as a character
Serial.print(InputStatus); // print the character
}

}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 47
Geregistreerd: 24 Nov 2014, 19:47

Re: arduino master en slave verbinding

Berichtdoor corolla_g6 » 02 Mrt 2016, 10:39

oke weer wat geleerd!

maar het werkt nog niet.... ik snap niet waarom niet, bovenin heb ik boolean Inputstatus en char InputStatus

ik weet dat boolean altijd 1 of 0 moet zijn maar char komt eigenlijk uit de basis sketch.... welke moet ik nou gebruiken en waarom? beide geprobeerd maar het werkt bij beide niet

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

Re: arduino master en slave verbinding

Berichtdoor nicoverduin » 02 Mrt 2016, 12:12

De Wire read leest 8 bits in. Dus een char of byte. Bool is zinloos en gaat 'toevallig' goed.
En heb je de serial al eens aan de slave gehangen? Dan weet je of er wat binnenkomt.
En soms is het beter om weer naar de basis te gaan en gewoon die voorbeeld programma's te laden om zeker te zijn dat er hardware matig niets verkeerd gaat. Dan kan je dat uitsluiten.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: arduino master en slave verbinding

Berichtdoor shooter » 02 Mrt 2016, 12:24

kijk ook eens naar easytransfer.
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 105 gasten