• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Wielozadaniowość nrf24l01 + przyciski i diody
#5
(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();
}
I chyba na razie taki zostanie. Przyciski dobrze reagują i jest git. Muszę jeszcze sprawdzić zasięg, bo nadajnik będzie w samochodzie.

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..
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Wielozadaniowość nrf24l01 + przyciski i diody - przez inazuma-akai - 27-01-2017, 14:29

Skocz do:


Przeglądający: 1 gości