Skocz do zawartości

Dla mnie zagatka, lecz ktoś napewno wie jak to napisać


Gal_kris

Pomocna odpowiedź

Witam serdecznie wszystkich forumowiczów, trafiłem tu bo jak każdy kto chce coś wykonać to szuka informacji wszędzie (czyli tu).

Mam pewien pomysł na przydatne mi urządzenie ale prawie zero wiadomości jak to zrobić, elektronicznie dam radę programistycznie z waszą pomocą

co potrzebuję:

program wsadowy do jakiegoś atmela, który będzie miał minimum 1 wejście i 2 wyjścia

program musi czytać dane przychodzące z wejścia i gdy pokażą się konkretne dane dać sygnał na jedno bądź drugie wyjście.

czyli pewnie w programie muszę utworzyć wzorzec do którego będzie porównany oryginał danych wchodzących na wejście.

generalnie tyle mi wystarczy choć być może wzorców będzie 256, na tę chwilę porzeba 2

proszę o sugestie jak to ugryść puki co jestem na etapie 2 części kursu programowania

pozdrawiam, Krystian

Link do komentarza
Share on other sites

Co będzie sygnałem wejściowym? Jaka będzie postać tej informacji, albo kto/co ją będzie wysyłał/o?

Czy na wyjściu chcesz mieć tylko stany 0-1 pojawiające się na odpowiednich pinach procesora? Co będziesz z tym dalej robił? Jakieś silniki, przekaźniki itp?

Link do komentarza
Share on other sites

Witam

Dane pochodzić będą z rs485, na wyjściu owszem ma być 0 i 1.

postać danych wygląda tak:

01 00 FF 01 00 C7

01 00 FF 01 00 C6

01 00 FF 01 00 C6

01 00 FF 01 00 C6

01 00 FF 01 00 C6

CA 00 00

01 00 FF 01 00 C6

CA 00 00

01 00 FF 01 00 C6

CA 00 00

01 00 FF 01 00 C6

CA 00 00

01 00 FF 01 00 C6

CA 00 00

01 00 FF 01 00 C6

CA 00 00

takie coś będzie leciało na wejęsie z tym że CA 00 00 to jedeno z danych które mnie interesuje powinno dać na wyjście 1 stan 1 a na wyjście 2 stan 0

co to będzie owszem robot a na razie jego część komunikacyjna po rs485, podłączony będzie do hexacoptera, no tyle zdradzę na razie.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Witam

od czasu napisanie pierwszego postu, trochę wody upłynęło lecz ja tak długo wczytywałem się w publikacje związane z programowaniem, mam już na swoim koncie pierwszą zrobioną rzecz, to zabawka dla kota laserowa opisana na majstrkowo.pl zrobiona na arduino uno, ponieważ mam koty a one nie lubią tak jak psy gdy laser stale pomyka na podłodze dodałem do całości czujkę ruchu więc cały układ grzecznie stoi w miejscu i dopiero gdy kot zaatakuje rusza o trzy pozycje do przodu.. działa świetnie na końcu wgrałem wszystko do arduino nano by odzyskać uno na inny projekt.

Mam stale zagwostkę z odebraniem danych z rs485 producent pisze że dane wyglądają tak:

73002000010000 a ja je widze w terminalu tak: 01 00 FF 01 00 C7 transmisja 9600,8,1,0

o co biega?? bo nie rozumiem

Gal

Link do komentarza
Share on other sites

Witam

Program już napisałem i działa świetnie, jedyny problem jaki po drodze wyskoczył to mało stabilna praca układu max485, lecz zdaje sobie sprawę że płytka stykowa może od czasu do czasu coś tam powodować, jak przeniosę to wszystko na laminat, będzie ok.

Dziękuję za wskazówki jakie otrzymałem na forum.

Krystian 🙂

Link do komentarza
Share on other sites

Witam

Napiszę dla potomnych jak poradzić sobie z odczytem danych idących w protokole rs485.

Na początek napiszę co miałem do dyspozycji:

klawiatura CCTV, konwerter RS485 na USB, Program Putty ( ale ostateczne znalazłem w sieci 232analizer.

założenie mojego projektu:  komunikacja klawiatury CCTV innego producenta z Rejestratorem cyfrowym innego producenta, ostatecznie przy okazji powstało kilka urządzeń sterowanych przez wspomnianą klawiaturę.

protokół komunikacji wysyłany przez naciskanie klawiszy w klawiaturze można było zaczytać przez konwerter bezpośrednio po podłączeniu do urządzenia, natomiast rejestrator i protokół w nim zawarty znalazłem na stronie producenta Hikvision  

co do programu i porównaniu danych

byte buffer[2]; 
int cnt = 0; 
#define kanal1 11
#define kanal2 12

void setup() 

{ 
Serial.begin(9600); 
//Serial.println("Start"); 
} 

void loop(void) 
{ 
pinMode(kanal1, OUTPUT); //Konfiguracja wyjść
pinMode(kanal2, OUTPUT);

 // pinMode(dioda, OUTPUT);
  digitalWrite(kanal1, LOW); //Doziemienie wyjść
  digitalWrite(kanal2, LOW);


// czytamy bajty
if ((cnt < 2) && Serial.available()) buffer[cnt++] = Serial.read(); 

if (cnt == 2) // odczytujemy wszyskie bajty
//Serial.print(Serial.available());
{  
//Serial.print("odpalamy kanal 1);
boolean same = true; // zakładamy że tablice są takie same
byte ans[]={0xDC,0x01,0x00}; //znaki do porównania

for (int i=0; i< 2 && same; i++) same = (buffer[i] == ans[i]); 

if (same) 
{ 
digitalWrite(kanal1, HIGH); //To włączamy kanal 1
     delay(20);
     digitalWrite(kanal1, LOW);
     //Serial.println(" odebrałem dane 1"); 
Serial.flush();
cnt = 0;
} 

if ((cnt < 2) && Serial.available()) buffer[cnt++] = Serial.read(); 

if (cnt == 2) // odczytujemy wszyskie bajty
//Serial.print(Serial.available());
{ 
//Serial.print("odpalamy monitor 2");
boolean same = true;
byte ans2[]={0xDC,0x02,0x0};
for (int i=0; i< 2 && same; i++) same = (buffer[i] == ans2[i]);
if (same) 
{ 
digitalWrite(kanal2, HIGH); //To włączamy kanal 2
 	delay(20);
     digitalWrite(kanal2, LOW);
     //Serial.println("odebrałem dane 2"); 

}
Serial.flush();
cnt = 0; 
//Serial.println("czyścimy bufor"); 
}

 

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.