• Ten serwis używa "ciasteczek" (cookies). Korzystając z niego, wyrażasz zgodę na użycie plików cookies. Learn more.
  • Szanowny Użytkowniku, serwisy w domenie modelarstwo.info wykorzystują pliki cookie by ułatwić korzystanie z naszych serwisów. Jeśli nie chcesz, by pliki cookies były zapisywane na Twoim dysku zmień ustawienia swojej przeglądarki.

Układ sterowania semafora KLUBA z Arduino UNO

Reakcje
3 0 0
#41
Analizując twoje połączenia ze zdjęcia masz źle zmontowany układ. Podłącz czarny przewód poprzez opornik do +5V, a zielony przewód do wyjścia
np. 3. Czerwony przewód do wyjścia 6.
Uruchom program:

const int ledPin = 3; //numer pinu do którego podłączona jest dioda
const int ledPin1 = 6; //numer pinu do którego podłączona jest dioda
int ledState = HIGH; // Stan diody nie świeci
int ledState1 = HIGH; // Stan diody nie świeci
unsigned long previousMillis = 0; // zmienna
// constants won't change:
const long interval = 1000; // interwał po którym dioda zmieni stan (milliseconds)
void setup() {
//pin jako wyjście
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);
pinMode(ledPin1, OUTPUT);
digitalWrite(ledPin1, ledState1);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
digitalWrite(ledPin, ledState);
}
}

Jedna dioda będzie mrugać, a druga powinna być zgaszona. Zmieniając ledPin na 6, a ledPin1 na 3 zmienisz mrugającą diodę.
Ponieważ układ jest ze wspólną anodą, sygnałem aktywnym jest zero.
Sprawdź najpierw poprawność połączenia, a potem baw się w PWM.
 
Ostatnio edytowane:

r-mik

Pan Chlewik
Reakcje
145 30 0
#42
Analizując twoje połączenia ze zdjęcia masz źle zmontowany układ. Podłącz czarny przewód poprzez opornik do +5V, a zielony przewód do wyjścia np. 3. Czerwony przewód do wyjścia 6.
Pozwolę sobie zacytować:
Pokaż schemat połączeń bo duża szansa, że diody mają wspólny rezystor lub jego brak.
Przepraszam, że znów miałem rację.

Wystarczyło mnie posłuchać, a nie pisać, że jestem butny, nie chcę pomóc itp tylko wziąć się do roboty, nie czekać na gotowe rozwiązanie i problem byłby już dawno rozwiązany. Na 90% rysując schemat zauważył byś błąd! To pisał PRAKTYK a nie teoretyk jak niektórzy sugerują. Gdybym był teoretykiem to nie zrealizowałbym setek działających projektów inie chodzi o takie migające diodą jak w tym przypadku.

PS
@andrzejc pokazał że żadnych Jav nie trzeba do tak prostego zadania jak miganie diodą. JS to armata na wróbla, tyle, że wielka armata na malutkiej łódce, która tą armatę ledwo dźwiga.
 
Ostatnio edytowane:
OP
OP
MarGe

MarGe

Aktywny użytkownik
Reakcje
10 1 0
#43
Analizując twoje połączenia ze zdjęcia masz źle zmontowany układ. Podłącz czarny przewód poprzez opornik do +5V, a zielony przewód do wyjścia
np. 3. Czerwony przewód do wyjścia 6.
Uruchom program:

const int ledPin = 3; //numer pinu do którego podłączona jest dioda
const int ledPin1 = 6; //numer pinu do którego podłączona jest dioda
int ledState = HIGH; // Stan diody nie świeci
int ledState1 = HIGH; // Stan diody nie świeci
unsigned long previousMillis = 0; // zmienna
// constants won't change:
const long interval = 1000; // interwał po którym dioda zmieni stan (milliseconds)
void setup() {
//pin jako wyjście
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);
pinMode(ledPin1, OUTPUT);
digitalWrite(ledPin1, ledState1);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
digitalWrite(ledPin, ledState);
}
}

Jedna dioda będzie mrugać, a druga powinna być zgaszona. Zmieniając ledPin na 6, a ledPin1 na 3 zmienisz mrugającą diodę.
Ponieważ układ jest ze wspólną anodą, sygnałem aktywnym jest zero.
Sprawdź najpierw poprawność połączenia, a potem baw się w PWM.
@andrzejc dzięki za sugestię, zaproponowane przez Ciebie podłączenie działa, program także, dzięki tej podpowiedzi udało mi się także odpowiednio zmodyfikować mój program w JS więc problem rozwiązany. Pozostaje mi jeszcze rozszerzenie układu o pytkę PCA9685 zwiększającą ilość złącz PWM do obsługi większej ilości semaforów ale to troszkę później.
 

r-mik

Pan Chlewik
Reakcje
145 30 0
#44
Pozostaje mi jeszcze rozszerzenie układu o pytkę PCA9685 zwiększającą ilość złącz PWM do obsługi większej ilości semaforów
Jak rozwiążesz problem status 0xF8 TWI w AVR? Arduinowskie biblioteki go nie rozwiązują i CPU się zawiesza na wiecznej pętli "while (TWI_STATUS != xx)". Kolejny problem z I2C, to blokowanie przez slave I2C w pewnych specyficznych sytuacjach. Tu także arduiniwe badziewiarskie biblioeki są bezsilne.
Nie spotkałem ani jednego programu na Arduino AVR, którego nie zwiesiłbym w ciągu kilku sekund gdy korzystają z I2C. Może Twój będzie pierwszy, który poprawnie obsłuży I2C? Ale jak piszesz w JS to nie masz wpływu na to co jest w niższych warstwach!
 

Bolesław 102

Bolesław Wielki Znawca Wszystkiego
Reakcje
361 98 10
#45
Ja daję wędkę a nie rybę!
Tyle tylko że ta "wędka" powinna być tak skonstruowana aby dawała szansę na "złowienie ryby".
Może jak byś zmienił narrację, (mniej się przechwalał, a bardziej był merytoryczny) to z Twoich postów dałoby się cokolwiek "wyłowić" (zrozumieć)?:niepewny:
 
Ostatnio edytowane:

r-mik

Pan Chlewik
Reakcje
145 30 0
#46
Tyle tylko że ta "wędka" powinna być tak skonstruowana aby dawała szansę na "złowienie ryby".
Jeśli tak jasna wskazówka jak "Trzeba zanegować sygnał" jest niejasna dla kgoś kto twierdzi, że programowanie nie jest dla niego problemem, nie wystarcza, to znaczy, że programowanie jest problemem i po prostu przechwalał się.
Ponadto podkreślam, że od początku wskazywałem na potencjonalne błędy w programie ale moje porady zostały "olane" twierdzeniami, że program jest dobry i zostałem nazwany butnym itp. Kto w takiej sytuacji poprawiłby program? Ja mam poprawiać eksperta w programowaniu? Niby dlaczego?

Niestety, na forach stawia się na minimum myślenia! Ileż to razy zadawane jest pytanie, na które odpowiedź znajduje się w archiwum z przed kilku miesięcy? To nagminne!
Ileż to razy "Program jest na pewno dobry i nie ma powodu aby go pokazywać" a okazuje się, że błąd jest w programie? Nagminnie, przykład mamy w tym temacie.

Na forach aktywny byłem przez 10 lat. Niestety, ostatnie 2-3 lata to tragedia. Wraz ze spadkiem poziomu nauczania w szkołach jest drastyczny spadek poziomu wiedzy na forach i niestety wzrost żądań przy jednoczesnym spadku ochoty rozwiązania problemu na własną rękę.
Tu był przykład jak autorowi nie chciało się narysować schematu co, jak pisałem, na 90% spowodowałoby, że znalazł by błąd. To była między innymi ta "wędka", ale autor nie skorzystał. Jak się później okazało miałem rację. Ale autor miał moje porady w głębokim poważaniu, wolał poczekać aż jakiś "jeleń" rozrysuje schemat z fotografii.
Zastanawiające, jak bez schematu podłączył to wszystko? Najpierw rysuje się schemat (nawet w głowie), późnej podłącza a nie na odwrót.
Autor, z pewnością "oleje" moje rady/pytania związane z TWI w I2C. Jego sprawa, zajmowałem się zawodowo AVR około 10 lat i produkty Atmela (jeszcze Atmela) znam "na wylot". Znam też Arduino, i wiem co jest tam spieprzone (praktycznie wszystko). Część moich projektów można znaleźć tu: http://er-mik.prv.pl/projekty_avt.php
Na szczęście, gdy odszedłem z pracy w ZPR MEDIA mogłem zająć się ARM. Same zalety. Część moich projektów na ARM można znaleźć tu:
http://er-mik.prv.pl/projekty_edw.php
Szkoda zdrowia i życia na AVR a tym bardziej na skopane od początku do końca Arduino bez debugera.
Szkoda też zdrowia na próbowanie niesienia pomocy, bo rady są "olewane" a owa "pomoc" ma polegać od odwaleniu całej roboty za osobę szukającej "pomocy". Tak naprawdę to szukanie "jelenia" aby odwalił "czarną robotę". Tak było w tym przypadku i z pewnością będzie w kolejnych tematach.
 
Ostatnio edytowane:
OP
OP
MarGe

MarGe

Aktywny użytkownik
Reakcje
10 1 0
#47
Cześć! Udostępniam wszystkim darmową aplikację (na zasadzie licencji MIT) do sterowania semaforami firmy KLUBA za pomocą platformy Arduino przy wykorzystaniu przeglądarki internetowej:
https://github.com/Class66/SemafoR

Prosty układ elektroniczny jaki może być obsłużony przez program pozwala na zastosowanie max. do 22 semaforów 5-komorowych. Przy semaforach z mniejszą ilością komór ilość naturalnie wzrasta. Rozwiązanie to znacznie obniża koszty sterowania większą ilością semaforów ponieważ nie wymaga osobnych układów elektronicznych dla każdego semafora oddzielnie.
Jedyny koszt jaki trzeba ponieść (oprócz posiadania komputera) to zakup samego Arduino oraz dodatkowych płytek PCA9685 dzięki którym można podłączać semafory. (Do każdej poj. płytki można podłączyć max. 3 semafory 5-komorowe - płytka ma bowiem 16 pinów do wykorzystania)
 

Artur

Bob Budowniczy
Zespół forum
Donator forum
FREMO Polska
MSMK
Reakcje
7.650 133 3
#48
Cześć! Udostępniam wszystkim darmową aplikację (na zasadzie licencji MIT) do sterowania semaforami firmy KLUBA za pomocą platformy Arduino przy wykorzystaniu przeglądarki internetowej:
https://github.com/Class66/SemafoR

Prosty układ elektroniczny jaki może być obsłużony przez program pozwala na zastosowanie max. do 22 semaforów 5-komorowych. Przy semaforach z mniejszą ilością komór ilość naturalnie wzrasta. Rozwiązanie to znacznie obniża koszty sterowania większą ilością semaforów ponieważ nie wymaga osobnych układów elektronicznych dla każdego semafora oddzielnie.
Jedyny koszt jaki trzeba ponieść (oprócz posiadania komputera) to zakup samego Arduino oraz dodatkowych płytek PCA9685 dzięki którym można podłączać semafory. (Do każdej poj. płytki można podłączyć max. 3 semafory 5-komorowe - płytka ma bowiem 16 pinów do wykorzystania)
Przed momentem rozmawiałem ze Zbyszkiem bo umieścił u siebie na stronie informację o Twoim programie i miałem gdzieś to umieścić na forum.
Kawał dobrej roboty ;)
 
Autor wątku Podobne wątki Forum Odpowiedzi Data
Elektryka 9
Elektryka 36
Elektryka 25
Elektryka 2
Elektryka 29

Podobne wątki