Aktywne Wpisy
![Logan00](https://wykop.pl/cdn/c3397992/Logan00_OmV8Begeja,q60.jpg)
Logan00 +1663
![Castellano](https://wykop.pl/cdn/c3397992/Castellano_MqiX0PMZP1,q60.jpg)
Castellano +682
Odcinek Breaking Bad „Ozymandias” uznawany jest za najlepszy odcinek w historii telewizji i wciąż jako jedyny ma ocenę 10/10 na IMDB.
Słowo "Ozymandias" jest znane z wiersza Percy'ego Shelleya opublikowanego w 1818 roku, w którym wizerunek posągu Ozymandiasza opisuje nieunikniony upadek wszystkich przywódców i imperiów, niezależnie od tego, jak potężni byli w swoich czasach. W serialu widzimy Waltera White'a upadającego na piasek, jak to miało miejsce w przypadku słynnego posągu. W 2013
Słowo "Ozymandias" jest znane z wiersza Percy'ego Shelleya opublikowanego w 1818 roku, w którym wizerunek posągu Ozymandiasza opisuje nieunikniony upadek wszystkich przywódców i imperiów, niezależnie od tego, jak potężni byli w swoich czasach. W serialu widzimy Waltera White'a upadającego na piasek, jak to miało miejsce w przypadku słynnego posągu. W 2013
![Castellano - Odcinek Breaking Bad „Ozymandias” uznawany jest za najlepszy odcinek w h...](https://wykop.pl/cdn/c3201142/52fb2edcb5d1b6657ff3908a6e068d90b8f520b287606d53c43722c818a1ac39,w150.jpg?author=Castellano&auth=fd8d6b72d796259f684e91efe9f4020b)
Hej Mirasy!
Szukam od kilku dni rozwiązania problemu. Wygląda on następująco:
Mam spięte magistralą i2c UNO r3 jako master i n klonów (dswyrobot - działają)
Dane przesyłane przez i2c:
Master:
- wysyła do slave'a 2 bajty danych (w tym momencie są to stany z przycisków, później będą to wyliczone kąty serw)
kod:
#include
const int buttonPin2 = 2;
const int buttonPin3 = 3;
byte buttonState2 = 0;
byte buttonState3 = 0;
byte test[] = {buttonState2, buttonState3};
void setup()
{
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
Wire.begin();
Serial.begin(9600);
}
void loop()
{
buttonState2 = digitalRead(buttonPin2);
buttonState3 = digitalRead(buttonPin3);
Wire.beginTransmission(4);
Wire.write(test[0]);
Wire.write(test[1]);
Wire.endTransmission();
delay(1000);
}
Slave:
-odbiera dane i zapala poszczególne diody
kod:
#include
#define SLAVEADDRESS 4
#define Regmapsize 2
#define MAXSENDBYTES
const int ledPin2 = 2;
const int ledPin3 = 3;
int ledState2 = 0;
int ledState3 = 0;
byte test[] = {ledState2, ledState3};
void setup()
{
Wire.begin(SLAVE_ADDRESS);
Wire.onRequest(requestEvent);
Wire.onReceive(receiveEvent);
Serial.begin(9600);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
}
void loop()
{
// delay(100); // czy jest to w ogóle potrzebne w tym wypadku?
}
void requestEvent(){
}
void receiveEvent(int bytesReceived)
{
while(1 < Wire.available())
{
test[0] = Wire.read();
test[1] = Wire.read();
if (test[0]>0)
{
digitalWrite(ledPin2, HIGH);
}
else
{
digitalWrite(ledPin2, LOW);
}
if (test[1]>0)
{
digitalWrite(ledPin3, HIGH);
}
else
{
digitalWrite(ledPin3, LOW);
}
}
delay(1000);
}
Co robię nie tak? Kluczową rolę w projekcie odgrywa komunikacja, a czas goni, nerwów brak..
Tak, dupa ze mnie nie programista. Nie miałem wcześniej zbyt owocnej pracy przy mikrokontrolerach...
Też polecam RS-485 a najlepiej dorzucić do tego MODBUS'a RTU żeby ustandaryzować komunikację(w necie widziałem gotowe przykłady na arduino).
Nie wiem dlaczego, ale wydawało mi się, że to i2c jest szybsze...
W takim razie podejście nr milion jeden do kolejnej próby rozwiązania problemu...
Dziękuję panowie, moderatora proszę o zamknięcie tematu.
PS. I2C działa napewno na 15m po skrętce sieciowej, i to biegnąc koło przewodu z 230v AC :P to jako ciekawostka bo I2C jest raczej magistralą na odlegości PCB ;)
Nic to, będę walczył dalej. Jeśli i przy RS485 będę miał jakiś problem, zawołam :)
I jeszcze raz dzięki!