Skocz do zawartości
Gal_kris

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

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

Udostępnij ten post


Link to post
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?

Udostępnij ten post


Link to post
Share on other sites

Jaki to ma związek z tematyką forum? Jeśli nie robisz robota to niestety żaden, czyli twój temat wyląduje w jedynym słusznym miejscu - koszu!

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
Share on other sites

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

Udostępnij ten post


Link to post
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 🙂

Udostępnij ten post


Link to post
Share on other sites

Gal_kris, to może poradzisz na przyszłość dla innych jak rozwiązać podobny problem?

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...