27-01-2017, 14:29
(27-01-2017, 12:06)namok napisał(a):(27-01-2017, 11:04)inazuma-akai napisał(a): Jeszcze mam problem z nrf24l01... Czy ten moduł ma jakieś ograniczenie dł kabla od arduino? Wszystko działa na dł kabli ze zworkami pod płytki stykowe i 1 max 2 długości tych kabli ogarnia a potem nie ma przesyłu. Da się to jakoś rozwiązać?To nie problem nrf24l01 tylko SPI po którym sterujesz nrf24l01. SPI wymyślono "na płytki" więc odległości transmisji nie są zbyt duże. Zacznij od zmniejszenia częstotliwości transmisji po SPI.
Aktualnie kod wygląda tak:
Kod:
#include <Timers.h>
#include "nRF24L01.h"
#include "RF24.h"
Timers <5> akcja;
int msg[1];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int LED1 = 2;
int LED2 = 3;
int X;
int D1 = 4;
int D2 = 5;
int W = 6;
int Y;
boolean buttonState = false;
void dioda_alarm()
{
if (digitalRead(D1) == HIGH)
{
msg[0] = 111;
radio.write(msg, 1);
digitalWrite(LED1, LOW);
X = LED2;
}
if (digitalRead(D2) == HIGH)
{
msg[0] = 112;
radio.write(msg, 1);
digitalWrite(LED1, LOW);
X = LED2;
}
}
void stan()
{
msg[0] = 113;
radio.write(msg, 1);
}
void dioda_on()
{
if (buttonState == 0)
{
digitalWrite(X, HIGH);
}
if (buttonState == 1)
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
}
}
void dioda_off()
{
if (buttonState == 0)
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
}
if (buttonState == 1)
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
}
}
void checkW()
{
if (digitalRead(W) == LOW) {
while(digitalRead(W)==LOW){
buttonState = !buttonState;
X=LED1;
delay(300);
} }
}
void setup()
{
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(W, INPUT);
digitalWrite(W, HIGH);
pinMode(D1, INPUT);
pinMode(D2, INPUT);
X = LED1;
radio.begin();
radio.openWritingPipe(pipe);
akcja.attach(0,200,dioda_alarm);
akcja.attach(1,1500,stan);
akcja.attach(2,1000,dioda_on);
akcja.attach(3,2000,dioda_off);
akcja.attach(4,40,checkW);
}
void loop()
{
akcja.process();
}
W sprawie SPI. Mógłbyś konkretnie podpowiedzieć jak mam zmienić częstotliwość SPI? I czy wpłynie to negatywnie na zasięg?
Jak widzisz program powyżej to zlepek jakiś kodów jakie udało mi się znaleźć w internecie. Pojęcia o programowaniu troszkę mam ale z arduino zacząłem od w sumie niedawna i nie ogarniam do końca co do czego.
Prosiłbym o pomoc na jakimś przykładzie, żebym potem mógł dostosować to do mojego kodu..