Hvala na savjetima, imao sam prije problema sa tim stvarima, ovo je bilo brzinski samo da znam da sam na pravom putu...
Nešto sam sređivao u kodu, bilo je još nekih sitnica koje su pravile probleme ali sam riješio.
Evo kako sad izgleda:
testirao sam slanje poruka, to radi, e sad ne znam da li sam pogodio dobro vrijeme u interrupt-u a mislim da nisam jer imam kašnjenje koje se okom vidi (kasni palenje ledice nako pritiska tastera).
Morao sam dodati i poruku za gašenje ledica u ovom kodu jer mi ostaju ledice upaljene na drugom Arduinu (receiveru) i na njemu sam morao ostaviti i "if" uslov i za provjeru da li je komanda za palenje ili gašenje, kada sam zamjenio sa "else" onda sam dobio treperenje ledica kada su istovpremeno aktivne?
Evo i kod od receivera, šta bih tu trebao izmjeniti?
Nešto sam sređivao u kodu, bilo je još nekih sitnica koje su pravile probleme ali sam riješio.
Evo kako sad izgleda:
Code:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); //RX, TX
int taster1 = 8;
int taster2 = 9;
unsigned char taster1test = 0;
unsigned char taster2test = 0;
void setup() {
pinMode(taster1, INPUT);
pinMode(taster2, INPUT);
mySerial.begin(9600);
// initialize Timer1
noInterrupts(); // disable all interrupts
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 62437;//62437;//34286; // preload timer 65536-16MHz/256/2Hz
TCCR1B |= (0 << CS10 ) | (0 << CS11) | (1 << CS12); //256
TIMSK1 |= (1 << TOIE1); // enable timer overflow interrupt
interrupts(); // enable all interrupts
}
ISR(TIMER1_OVF_vect) // interrupt service routine that wraps a user defined function supplied by attachInterrupt
{
TCNT1 = 62437; // preload timer
if(digitalRead(8) == HIGH){
//digitalWrite(LED, HIGH);
taster1test++;
if(taster1test > 3){
mySerial.println(1111); //poruka koja se šalje kao komanda
}
}
else{
taster1test = 0;
mySerial.println(0000);
}
if(digitalRead(9) == HIGH){
//digitalWrite(LED, HIGH);
taster2test++;
if(taster2test > 3){
mySerial.println(2222); //poruka koja se šalje kao komanda
}
}
else{
taster2test = 0;
mySerial.println(3333);
}
}
void loop() {
}
Morao sam dodati i poruku za gašenje ledica u ovom kodu jer mi ostaju ledice upaljene na drugom Arduinu (receiveru) i na njemu sam morao ostaviti i "if" uslov i za provjeru da li je komanda za palenje ili gašenje, kada sam zamjenio sa "else" onda sam dobio treperenje ledica kada su istovpremeno aktivne?
Evo i kod od receivera, šta bih tu trebao izmjeniti?
Code:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int ledPin = 13;
int ledPin2 = A1;
void setup() {
mySerial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
}
void loop() {
if(mySerial.available() > 1){
int input = mySerial.parseInt();//read serial input and convert to integer (-32,768 to 32,767)
if(input == 1111){//if on code is received
digitalWrite(ledPin, HIGH);//turn LED on
}
/*else{
digitalWrite(ledPin, LOW);
}*/
if(input == 0000){//if off code is received
digitalWrite(ledPin, LOW);//turn LED off
}
if(input == 2222){
digitalWrite(ledPin2, HIGH);
}
/*else{
digitalWrite(ledPin2, LOW);
}*/
if(input == 3333){
digitalWrite(ledPin2, LOW);
}
}
mySerial.flush();//clear the serial buffer for unwanted inputs
//delay(20);//delay little for better serial communication
}