A przypadkiem ten driver nie ma jednego wejścia/wyjścia UART? PDN do RX a między RX a TX na Arduino daje się rezystor 1K. Do tego użycie delay zraziły mnie do analizy kodu.
Wrzucasz wyjście potencjometru na wejście ADC i wartość przetwornika wrzucasz jako parametr funkcji delay na przykład z mnożnikiem ;) Pare linijek kodu.
czy tamtego nie da się naprawić Na początku tego tematu wrzuciłem Ci poprawki do programu. Poniżej cały program - z kodu początkowego. Nie uwzględnia korekcji zaproponowanych przez bota. Zwróć uwagę na uproszczenie całości przez dodanie jednej funkcji. Delay zostawmy na później żeby Ci nie mieszać. W tym przypadku za jego pomocą decydujesz jedynie,...
Kod masz tak napisany, że odebranie jakiekolwiek kodu wyłącza przekaźnik, a tylko odebranie 4472242 go załącza, po tym jak go dajesz na HIGH masz delay 1000 i już go nie wyłączasz, nie ma kolejnego polecenia digitalWrite(13,LOW);. Poza tym możesz być już wdzięczny, bo funkcja delay działa prawidłowo.
Delay jest w każdym kodzie przykładowym Arduino bo są to dema demonstracyjne. A używane są przez wszystkich, AVR C, Bascom, Arduino, itd. (at)kamilple jest dużo darmowych kursów Arduino, np. na Forbot jest zwieńczony przykładem programu wielozadaniowego bez delay. Przejdź sobie ten kurs, a wiele się rozjaśni.
Ponieważ jest sobota i jestem leniem to gotowego programu pisał nie będę. Poza tym cała frajda z Arduino to napisać własny program, który będzie działał. funkcja Delay jest najgorszym z możliwych rozwiązań, bo podczas jej wykonywania program stoi. Proponowałbym zapoznać się z funkcją timer. Proste przykłady są tutaj https://playground.arduino.cc/Code/Timer...
Przeanalizuj(zastosuj) przykładowy szkic "blink without delay". Zrezygnuj ze stosowania funkcji delay na rzecz millis , micros.
Do RS485 są biblioteki, może lepiej to zadziała. Nadawanie w Arduino jest na przerwaniach, wysyłasz napis do bufora i funkcja Serial.print się kończy, w tle uruchamia się funkcja do faktycznego wysyłania w przerwaniach i nadaje znak po znaku, ale ty przełączasz na odbiór, więc nie wysyła. Pierwszy wysyła bo masz delay 500. Po wysłaniu tekstu możesz...
To zależy co masz na myśli, delay też nie blokuje przerwań, ale jest uznawana za funkcję blokującą. Jak w loop wywołasz pulseln() i będziesz będziesz mierzył impuls 500ms to w tym czasie żadna funkcja z loop się nie wykona, tak samo jak z delay().
nie dokładnie rozumiem kod wolałbym otrzymać kompletny kod Oczywiście, z przyjemnością udostępnię Ci kompletny kod kalkulatora dla Arduino Uno, który nie wykorzystuje wyświetlacza. Zamiast tego wyniki zostaną wysłane do komputera przez port szeregowy. [syntax=cpp] const int buttonPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; // Przyciski dla cyfr 0-9 const...
Tak, z tym bajtem to oczywiście dla pełnego zakresu obrotu potencjometrem 4 razy będzie rozjaśniać i ściemniać w zakresie 0-63 , więc przesył działał prawidłowo. Z tym Arduino w nadajniku to masz wszystko w porządku? Próbowałeś zamigać ledem co 1s z delay, wysłać coś na UART? Może w ogóle kwarc masz źle ustawiony. Może zamień je ze sobą. Jak w Arduino...
Nie przerwiesz pętli for, while, do while jeśli nie będziesz w każdym obiegu pętli sprawdzał stanu, który ma to przerwać. Ta część: if (irrecv.decode(&results)){ long int decCode = results.value; się nie wykona w żadnej takiej pętli. Musiałbyś obsługę tego przenieść w przerwanie, czyli cyklicznie co np. 10ms sprawdzać stan (irrecv.decode(&results),...
Ok, napisałeś zrozumiale :) Mam prośbę o podesłanie kodu jak teraz wygląda u Ciebie funkcja setup(). Ale to dopiero po kolejnym teście, który proponuję. Dodaj niewielki delay przed lcd.begin(); np. jakieś 100-200ms, jeśli to zawiedzie, to proszę pokaż kod.
Przypisywać powinieneś wartość zwracaną przez metodę getTempCByIndex - tak jak to robisz wyświetlając wynik, a nie metodę requestTemperatures która tylko wykonuje pomiar do zmiennej wewnątrz klasy a później nie zwraca nic (dlatego void). Poza tym twój kod jest tak samo zły jak wspomniany delay - poczytaj o przerwaniach.
Mrugająca dioda , proszę bardzo , wgraj sobie program blink z przykładów , a czas świecenia i gaśnięcia zmieniasz w skeszu przy delay w nawiasie (milisekundy) . Do tej czujki szukaj przykładów na termometr analogowy na arduino . Kup lepiej czujkę cyfrową na ds 18b20 z trzema przewodami , będzie ći łatwiej zrozumieć sketcha.
Zmienne liczbowe lepiej deklarować jako uint8_t, uint16_t, uint32_t i ewentualnie int8_t, itd, jeśli mają być ze znakiem, wtedy niezależnie od użytej płytki Arduino (niektóre mają int 32bity) zakres zmiennej będzie taki sam i wszyscy wiedzą o co chodzi, a kompilator w szczególności. Jeśli to jest UNO czy podobna z atmega328p to ADC jest oczywiście w...
(at)ElektrodaBot Napisz program do arduino nano w języku arduino Nie używaj funkcji Delay Zaimplementuj moduł zegara RTC DS1307 I2C Zaimplementuj moduł wyświetlacza LED 4 cyfry opartego o sterownik TM1637 Zaimplementuj trzy przełączniki na PinD9=UstawGodzine, PinD10=Ustawminuty i PinD11=PrzełaczCzas W programie umieść obsługę zegara na wyświetlaczu,...
Szybko Ci poszło przeczytanie wszystkich artykułów na mikrokontrolery.blogspot. W każdym programie jakoś musisz obsługiwać upływ czasu, na pierwszej lekcji do zamigania led użyłeś delay, do paru innych prostych programów to też wystarczy, ale generalnie należy to robić na timerze. Jest to tak oczywiste, że w Arduino zrobili do tego gotowe funkcje, w...
Z EEPROM jest wiele zabawy. Najprościej nie zapisywać co 1-2m dystansu, jak miałeś w programie, czy co 1s, jak się zrobiło gdy przeniosłem Ci to do loop. Masz odmierzanie czasu tym nieszczęsnym delay 1000, to definiuje najmniejszą jednostkę czasu w tym programie. Naucz się millis() i usuniesz to ograniczenie. Ale tu też można coś wyrzeźbić, po tym delay...
Ustawiłem licznik który zwiększa swoją wartość podczas wysyłania kodu repetycji , licznik zatrzymuje się gdy kod repetycji się nie pojawia, jak to zrobić żeby wtedy dioda gasła ? Przestudiuj tą poniżej prezentację: https://dronebotworkshop.com/using-ir-re... W okolicy 29-30 minut masz omówioiny ten koncept na przykładzie strowania...
1. Pisać kod na forum jak należy - przeczytaj instrukcję obsługi forum. 2. Szybciej nie będzie przy takim programie. Sam delay ogranicza do poniżej 100hz następnie wolne operacje na SD i serial. Tak więc czego oczekujesz?
Z delayami tego na pewno nie zrobisz, musisz nauczyć się zarządzać czasem - millis, timery sprzętowe, gotowe biblioteki (timerOne), millis opisane jest w kursie: https://forbot.pl/blog//kurs-arduino-pod... i raczej nie powinieneś zaczynać od jego końca. Coś takiego jak maszyna stanów, switch-case też nie zaszkodzi...
Działający szkic wg Twoich wymagań: [syntax=c]const byte pinLed_1 = 3; const byte pinLed_2 = 4; const byte pinLed_3 = 5; const byte switchPin = 8; byte count = 1; void setup() { pinMode(switchPin, INPUT); digitalWrite(switchPin, HIGH); pinMode(pinLed_1, OUTPUT); pinMode(pinLed_2, OUTPUT); pinMode(pinLed_3, OUTPUT); } void loop() { if(digitalRead(switchPin)==LOW)...
Tak, niedokładność czasu delay wynika głównie z tego, że dodaje się do tego czas wykonania innych funkcji, w tym szczególnie funkcji obsługi przerwań. W przypadku odpowiedniego użycia timera tej niedokładności nie ma, a w każdym razie nie akumuluje się ona, tak jak w przypadku delay. Oczywiście jeśli coś ma być wykonywane w superdokładnych odstępach...
Program musi działać na zbocze - musisz zapamiętać w jakiejś zmiennej że nastąpiło wciśnięcie przycisku: [syntax=cpp]void setup() { Serial.begin(9600); pinMode(7, INPUT_PULLUP); pinMode(13, OUTPUT); } void loop() { int sensorVal = digitalRead(7); static int wcisniety; Serial.println(sensorVal); if (sensorVal == HIGH) { wcisniety = 0; } if ((sensorVal...
na samym końcu jeszcze daj jakaś przerwę np. delay (1000) by cały czas Ci nie odświeżał ekranu bo ekran możne nie nadążyć z odświeżaniem, po za tym według tego schematu E masz podłączone do pinu 11
Dzięki za odpowiedź. Zapoznam się z tymi tematami. Rzecz w tym, że nie chciałbym dodawać więcej elementów do tego układu i pozostać przy tych, które posiadam. Rozumiem, dlaczego nie używać delay (można korzystać z timerów i wtedy może się to udać) ale dlaczego nie float?
Dobry wieczór wszystkim. Mam problem z Arduino Nano, w moim kodzie gdzieś musi tkwić szkopuł, który nie pozwala na wykonanie funkcji z attachInterrupt. Robię projekt do mini szklarni, i aby przekaźniki od rezystora grzejnego co chwilę nie włączały i nie wyłączały się, musiałem wstawić delay, jako opóźnienie przy nagrzewaniu i chłodzeniu powietrza. Jednak...
Dane pokazywane oczom użytkownika mogą być zupełnie inne niż te przechowywane w programie. Wpisywanie wartości liczby po cyferce jest uciążliwe. W piekarniku mam ustawianą godzinę jednym przyciskiem (czy dwoma), wystarczy w programie zauważyć że przycisk został wciśnięty, przytrzymany przez 1s, przytrzymany przez 5s,itd. Jak nie używasz delay nie jest...
Zanim zaczniesz programować Arduino poczytaj trochę o programowaniu Arduino. W Twoim programie są 3 funkcje: void setup(), void loop() i void menu(). Po włączeniu mikrokontrolera wykonuje się funkcja void setup(), a następnie zaczyna się wykonywać w kółko void loop(). void menu() nie wykona się w takim kodzie nigdy, bo... nigdzie nie napisałeś kiedy...
Najlepiej zapomnij o używaniu funkcji delay i używaj timerów/liczników oraz przerwań. Na tym Forum wyszukasz wiele tematów na ten temat. Na innych stronach będzie tego miliony. Na przykład tutaj: http://www.elektroda.pl/rtvforum/viewtop...
To co zrobiłeś nie miało prawa zadziałać z wybraną płytką NG, ona ma ustwienie na kwarc 16MHz: c:\Program Files (x86)\Arduino\hardware\arduino\avr\board... ... ########################################... atmegang.name=Arduino NG or older atmegang.upload.tool=avrdude atmegang.upload.protocol=arduino atmegang.upload.speed=19200 atmegang.bootloader.tool=avrdude...
Tu masz gotowy kod standardowego drivera (bez akceleracji) przerobiony na C uruchamialny na Arduino. Musisz go tylko przełożyć na swój kompilator (nie wiemy, jaki masz) i wpisać ilość kroków silnika na obrót. Jakby co, to pytaj. [syntax=c]typedef struct { int direction; // Direction of rotation unsigned long step_delay; // delay between steps, in ms,...
Nie wiem jaki masz LCD: 16x2 czy 24x2, jakby co to dasz radę sam ustawić. [syntax=cpp] // DS1307_LCD (C)2010 Henning Karlsen // Uses DS1307 library but not wire library // DS1302: SDA pin -> Arduino Digital 18 // SCL pin -> Arduino Digital 19 // LCD: DB7 -> Arduino Digital 2 // DB6 -> Arduino Digital 3 // DB5 -> Arduino Digital 4 // DB4...
Jasne, najpierw proszę zapoznaj się z tematem: https://www.elektroda.pl/rtvforum/topic3... „Pożyczyłem” sobie z niego pomysł na MOSFET IRF630 jako układ wykonawczy. https://obrazki.elektroda.pl/1699343900_... Pojedynczy schodek to 21 diód LED (taśma 300 LED podzielona na 13, diody są w sekcjach po 3). Maksymalny...
Witam, ...silnik bedzie sie awersowal i rewersowal z czestotliwoscia 100 ms. W tym samym czasie w przegladarce internetowej bedzie podglad na temperature tego silnika w kilku jego miejscach. Oczywiscie trzeba bedzie zrobic tam rowniez buttony wlaczania i wylaczania tego silnika. Narazie tworze prototyp na diodach. Najpierw zdecyduj się na język jakim...
uzupełniłem sobie piny i chciał bym na początek zrealizować jednym klawiszem tak: jedno kliknięcie- miganie diody przetrzymanie klawisza- zaświecenie się diody Tak jak Ty to robisz to jest nie bardzo poprawnie. Zauważ że kiedy robisz te delay to program tkwi tam jakiś czas i nie podgląda sygnałów wejściowych. Również tym sposobem możesz robić tylko...
To co mi udało się zbudować to zlicza 3 impulsy na 4 wraca do zera ale trzymając przycisk program zapętla i cały czas zał. wył. Wraca do zera, bo po trzecim zerujesz licznik i program nie ma szans osiągnąc stan licznika 4. Ten delay przed zerowaniem licznika tylko zatrzymuje program na ten czas, a ty oczekujesz że 'przeskoczy ' zerowanie. Poza tym...
Stacja Pogodowa ESP8266 + wyświetlacz T6963 https://obrazki.elektroda.pl/7068126200_... Wcześniej stworzyłem stację pogodową przy której były użyte dwa mikrokontrolery Atmega328p (arduino nano) i ESP8266 (NodeMCU) z wyświetlaczem opartym na sterowniku T6963. Na forum https://obrazki.elektroda.pl/1280939000_... Zagadnienie...
No to się doucz i będziesz znał. "Super" porada, ale przerwania nie sa tu konieczne. Naucz się też używać tagów. faktycznie, użyj znaczników(tagów) SYNTAX, bo czytać sie kodu nie chce. - wywal delay - wykrywaj zmianę stanu pinu a nie reakcję na określony stan, dla Arduino jest stosowna biblioteka (Debounce) ale można zrobić i bez niej, trzeba też zlikwidować...
(at)Leonisko1234 co według Ciebie ma robić ten program, który zamieściłeś? Skonfigurowałeś pin 8, a próbujesz migać pinem 9 i to jeszcze, dość szybko (50 ms). Jak to się ma do sterowania silnikiem? Tutaj akurat dobrze zrobił pin8 daje na DIR a miga pin9 na Step sterownika. Nie działa, ponieważ coś nie tak z zasilaniem, VMOT i VDD Tutaj schemat podłączenia...
Napisz tak swoje podprogramy by były w nich powtarzalne pętle, wtedy można użyć poleceń break (dla pętli) i return (dla całej funkcji) by ją przerwać gdy przycisk zostanie wciśnięty: if (digitalRead(A2) == 0) return;. Można to wstawiać dowolnie często, ale jak odpowiednio napiszesz funkcję (podprogram) z millis to ona może działać cały czas "równolegle"...
żywając PROGMEM (makro F() dla łańcuchów tekstowych) A kompiluje Ci to? Mnie w Arduino IDE działa tylko tam gdzie jest wydruk na serial i operacje w ten deseń... Faktycznie jest jeden "babol" z użyciem __FlashStringHelper * jako argumentu w konstruktorze MenuItem(), ale można to obejść. Poniżej poprawiony kod "Hello World". [syntax=c] #include <MenuBackend.h>...
Przy tym programie nie ma to najmniejszego sensu. [syntax=c] prevmilis = millis(); while(millis() - prevmillis < delay);[/syntax]
Cześć, Gratuluję udanego i ciekawego projektu. Pewnie spędziłeś nad nim sporo czasu. Boję się, że mało osób używa języka Pascal do programowania układów AVR, skoro teraz króluje język C. Czy możesz udostępnić przykładowy kod typu blink led dla Atmega8 lub innego procesora, żeby przypomnieć sobie ten język programowania? Pozdrawiam, Rafał -:) Dziękuję...
https://obrazki.elektroda.pl/5325188100_... Przedstawię tutaj ADS1115 czyli 4-kanałowy, 16-bitowy przetwornik ADC. ADS1115 dostępny jest do kupienia w naszym kraju za kilkanaście złotych, a zza granicy można go sprowadzić nawet o połowę taniej. ADS1115 korzysta z protokołu I2C, więc można na jedną magistralę podłączyć aż 4 osobne takie...
https://obrazki.elektroda.pl/7088978900_... Nie tak znowu dawno temu, jeszcze gimnazjalistą będąc natrafiłem na Układ FV-1 (właściwie SPN1001) jest procesorem DSP zaprojektowanym przez śp. Keitha Barra oraz Franka Thompsona, a produkowanym przez ich firmę - SpinSemiconductor od roku 2006. Cechą szczególną tej jednostki jest jej kompaktowa...
https://obrazki.elektroda.pl/5950460500_... Dzisiaj wykonamy prosty wyświetlacz pogody w oparciu o ESP32. Pogoda będzie pobierana z internetu dzięki użyciu jednej z wielu darmowych usług typu "weather API". Projekt nie będzie używać żadnych czujników typu DHT11 czy BMP280, wszystkie informacje będą pobierane z sieci poprzez proste...
http://obrazki.elektroda.pl/1813143900_1... Witam wszystkich! Chciałbym zaprezentować wam swój projekt bezużytecznej maszyny. Nie jest to jednak bezużyteczna maszyna, jaką większość z Was kojarzy. Pudełko jest wyposażone w nie jedno, a 7 przycisków typu toggle switch. Budowę rozpocząłem od skonstruowania skrzynki o wymiarach 430x120x160mm....
Delay nie chcę użyć ponieważ on mi zablokuje wykonywanie innych instrukcji jak chociażby obsługę wejść (potencjometr, switch). Chyba nie do końca dobrze ująłem w pierwszym poście co chcę uzyskać. Chciałbym zablokować jedno wyjście arduino na czas 0,2 sek (tak aby było nieaktywne) tuż przed przystąpieniem do pomiaru temperatury. O ile wiem jak wykonać...
funkcja delay arduino delay pamięć delay pamięć funkcja delay
modyfikacje motoroli podłączenie pieca kondensacyjnego dysza gazowa palnika propan butan
pralka amica protokół instalacji elektrycznej
Instrukcja obsługi pralko suszarki Mastercook SPFD-1064 Chrysler Pacifica 2021 - Nie otwierają się tylne szyby