arduino master en slave verbinding
9 berichten
• Pagina 1 van 1
- corolla_g6
- Berichten: 47
- Geregistreerd: 24 Nov 2014, 19:47
arduino master en slave verbinding
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
slave arduino
cpp code
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: arduino master en slave verbinding
Welke voorbeelden heb je gebruikt?
- corolla_g6
- Berichten: 47
- Geregistreerd: 24 Nov 2014, 19:47
Re: arduino master en slave verbinding
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
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: arduino master en slave verbinding
Probeer dit 's
cpp code
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);
}
}
}
- corolla_g6
- Berichten: 47
- Geregistreerd: 24 Nov 2014, 19:47
Re: arduino master en slave verbinding
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
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
}
}
}
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: arduino master en slave verbinding
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
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
}
}
- corolla_g6
- Berichten: 47
- Geregistreerd: 24 Nov 2014, 19:47
Re: arduino master en slave verbinding
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
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: arduino master en slave verbinding
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.
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.
9 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: axxiova, tavopitipv en 21 gasten