Hier kommt noch der Salve 1 (Arduino Nano V3) Ist einfach mit 2 LED bestückt
/*In Arduino 1.0.1*/
#include "Arduino.h"
#include "RS485_protocol.h"
#include <SoftwareSerial.h>
#define ENABLE_PIN 4
#define LED 13
SoftwareSerial rs485 (2, 3); // receive pin, transmit pin
// callback routines
void fWrite (const byte what)
{
rs485.write (what);
}
int fAvailable ()
{
return rs485.available ();
}
int fRead ()
{
return rs485.read ();
}
void setup()
{
rs485.begin (9600);
pinMode (ENABLE_PIN, OUTPUT); // driver output enable
pinMode (LED, OUTPUT); // built-in LED
pinMode(2,INPUT);
pinMode(3,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
} // end of setup
void loop()
{
byte buf [10]; // Buffer für Daten max 20 Byte
byte received = recvMsg (fAvailable, fRead, buf, sizeof (buf) - 1,50);
if (received){
if (buf [0] != 1)
return; // not my device
digitalWrite(buf[2],buf[3]);
}
} // end of loop
Hier ist der Attiny84 mit dem SlaveProgramm
Der Cores sind von hier
~~http://hlt.media.mit.edu/?p=1695~~
Aktualisiert
/*
Achtung Sektch für den ATTINY84A als RS485 Node In 1.0.1
*/
#include <SoftwareSerial.h>
#include "Arduino.h"
#include "RS485_protocol.h"
#define ENABLE_PIN 8
#define LED1 0
#define LED2 1
boolean Anfrage=true;
int Wert=2612; // Sendewert
byte HB1,LB1=0;
byte msg[4];
byte MasterAdr=0;
SoftwareSerial rs485 (10, 9); // receive pin, transmit pin
// callback routines
void fWrite (const byte what)
{
rs485.write (what);
}
int fAvailable ()
{
return rs485.available ();
}
int fRead ()
{
return rs485.read ();
}
void setup()
{
rs485.begin (9600);
pinMode (ENABLE_PIN, OUTPUT); // driver output enable
pinMode (LED1,OUTPUT); // built-in LED
pinMode (LED2,OUTPUT);
} // end of setup
void loop()
{
byte buf [10]; // Buffer für Daten max 20 Byte
byte received = recvMsg (fAvailable, fRead, buf, sizeof (buf) - 1,50);
if (received){
if (buf [0] != 2)
return; // not my device
if (buf[1]==0x00){
digitalWrite(buf[2],buf[3]);
}
if (buf[1]==0xAA){
Anfrage=true;
}
}
if (Anfrage==true){
HB1=highByte(Wert);
LB1=lowByte(Wert);
msg[0]=MasterAdr;
msg[1]=HB1;
msg[2]=LB1;
digitalWrite(ENABLE_PIN,HIGH); // Treiber Aktivieren
sendMsg (fWrite, msg, sizeof msg); // Daten Senden
digitalWrite(ENABLE_PIN,LOW); // Treiber deaktiviern Empfänger akvivieren
}
} // end of loop