fixed comment in Sender.ino
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -1,129 +0,0 @@
|
|||||||
// Breadboard
|
|
||||||
//int enable = 2;
|
|
||||||
//int sTx = 4;
|
|
||||||
//int sRx = 5;
|
|
||||||
|
|
||||||
// RS485-Nano Revision 1.0
|
|
||||||
int enable = 9;
|
|
||||||
int sTx = 8;
|
|
||||||
int sRx = 3;
|
|
||||||
|
|
||||||
// Für Controllino könnte man benutzen: sRx = 20, sTx = 21, enable = 53
|
|
||||||
|
|
||||||
int in1 = 4; // o
|
|
||||||
int in2 = 5; // |o
|
|
||||||
int in3 = 6; // ||o
|
|
||||||
int in4 = 7; // |||o
|
|
||||||
// ↓↓↓↓
|
|
||||||
int irq = 2;// ←++++
|
|
||||||
|
|
||||||
long base = 1000;
|
|
||||||
|
|
||||||
int id = 0;
|
|
||||||
int baud = 115200;
|
|
||||||
char c;
|
|
||||||
int counter = 0;
|
|
||||||
bool reg1=false,reg2=false,reg3=false,reg4=false;
|
|
||||||
|
|
||||||
void setup(){
|
|
||||||
Serial.begin(baud);
|
|
||||||
pinMode(A0,INPUT);
|
|
||||||
id = analogRead(A0);
|
|
||||||
|
|
||||||
pinMode(enable,OUTPUT);
|
|
||||||
digitalWrite(enable,LOW);
|
|
||||||
|
|
||||||
pinMode(sTx,OUTPUT);
|
|
||||||
digitalWrite(sTx,LOW);
|
|
||||||
|
|
||||||
pinMode(in1,INPUT);
|
|
||||||
pinMode(in2,INPUT);
|
|
||||||
pinMode(in3,INPUT);
|
|
||||||
pinMode(in4,INPUT);
|
|
||||||
|
|
||||||
pinMode(irq,INPUT);
|
|
||||||
attachInterrupt(digitalPinToInterrupt(irq),interrupt,RISING);
|
|
||||||
|
|
||||||
pinMode(sRx,INPUT);
|
|
||||||
Serial.print("Baud rate set to ");
|
|
||||||
Serial.println(baud);
|
|
||||||
Serial.print("Initialized Arduino #");
|
|
||||||
Serial.println(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
void interrupt(){
|
|
||||||
Serial.println("Interrupt");
|
|
||||||
reg1 = digitalRead(in1);
|
|
||||||
reg2 = digitalRead(in2);
|
|
||||||
reg3 = digitalRead(in3);
|
|
||||||
reg4 = digitalRead(in4);
|
|
||||||
|
|
||||||
}
|
|
||||||
bool sendBit(bool bt){
|
|
||||||
digitalWrite(sTx,bt);
|
|
||||||
delayMicroseconds(80);
|
|
||||||
if (digitalRead(sTx) != bt) return false;
|
|
||||||
delayMicroseconds(base-80);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool sendChar(char c){
|
|
||||||
return sendBit(c & 0x01)
|
|
||||||
&& sendBit(c & 0x02)
|
|
||||||
&& sendBit(c & 0x04)
|
|
||||||
&& sendBit(c & 0x08)
|
|
||||||
&& sendBit(c & 0x10)
|
|
||||||
&& sendBit(c & 0x20)
|
|
||||||
&& sendBit(c & 0x40)
|
|
||||||
&& sendBit(c & 0x80);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool sendString(String s){
|
|
||||||
Serial.print("Sending '"+s+"'…");
|
|
||||||
boolean busy = false;
|
|
||||||
for (int i = 0; i<11; i++){
|
|
||||||
if (!digitalRead(sRx)) {
|
|
||||||
if (!busy){
|
|
||||||
Serial.print("busy…");
|
|
||||||
busy = true;
|
|
||||||
}
|
|
||||||
i = 0; // wait for free line
|
|
||||||
}
|
|
||||||
delayMicroseconds(base);
|
|
||||||
}
|
|
||||||
digitalWrite(enable,HIGH);
|
|
||||||
bool success = sendBit(0); // erste Flanke erzeugen
|
|
||||||
if (success) {
|
|
||||||
for (char c : s){
|
|
||||||
if (!sendChar(c)){
|
|
||||||
success = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
success = success && sendChar(13);
|
|
||||||
success = success && sendBit(1); // letzte Flanke erzeugen
|
|
||||||
digitalWrite(enable,LOW);
|
|
||||||
Serial.println(success ? "success" : "failed");
|
|
||||||
return success;
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop(){
|
|
||||||
if (reg1){
|
|
||||||
reg1 = false;
|
|
||||||
sendString("t:02:01");
|
|
||||||
}
|
|
||||||
if (reg2){
|
|
||||||
reg2 = false;
|
|
||||||
sendString("t:02:02");
|
|
||||||
}
|
|
||||||
if (reg3){
|
|
||||||
reg3 = false;
|
|
||||||
sendString("t:02:03");
|
|
||||||
}
|
|
||||||
if (reg4){
|
|
||||||
reg4 = false;
|
|
||||||
sendString("t:02:04");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* Demonstrates how to use LCDisplay in conjunction with SoftRS485:
|
* Demonstrates how to use Read Buttons in conjunction with SoftRS485:
|
||||||
*
|
*
|
||||||
* The main _loop_ of this program listens on the RS485 bus.
|
* If a button is pressed, a corresponding flag is set.
|
||||||
* Whenever a message is received from the bus, it is displayed on the LCD.
|
* The main loop checks for the state of those flags and
|
||||||
|
* sends a message on the RS485 bus whenever a flag is set.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// include the library code:
|
// include the library code:
|
||||||
@@ -31,7 +32,7 @@ unsigned long times[8];
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void setup() {
|
void setup(){
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
init485(Max485_RO,Max485_RE,Max485_DE,Max485_DI); // library initialization:
|
init485(Max485_RO,Max485_RE,Max485_DE,Max485_DI); // library initialization:
|
||||||
pinMode(BTN_INT,INPUT_PULLUP);
|
pinMode(BTN_INT,INPUT_PULLUP);
|
||||||
@@ -73,7 +74,7 @@ void isr(){
|
|||||||
#ifdef SEND_485
|
#ifdef SEND_485
|
||||||
void send(int btn){
|
void send(int btn){
|
||||||
String s = "{nano:"+String(ID)+",btn:"+String(btn)+"}";
|
String s = "{nano:"+String(ID)+",btn:"+String(btn)+"}";
|
||||||
for (int i = 0; i<10; i++){
|
for (int i = 0; i<10; i++){
|
||||||
if (send485(s.c_str())) break;
|
if (send485(s.c_str())) break;
|
||||||
Serial.println("collision detected, trying again:");
|
Serial.println("collision detected, trying again:");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user