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?
Wywaliłem unsigned long aktualnyczas = 0, a potem wszystkie aktualne czasy i zastąpiłem samym millis() Kod działa dokładnie tak, jak miał. Skoro ten mechanizm służy do ‘huśtania’ zegarka, które z założenia wymaga raczej bezpośredniego nadzoru z ręcznym sterowaniem przyciskami, niemniej jednak możesz zastosowac 'automatyczne' wyjście z pętli...
ChatGPT wyłączyli? :) unsigned long poprzedniCzas6 = 0; // czas poprzedniego pomiaru dla przycisku na pinie 6 unsigned long poprzedniCzas5 = 0; // czas poprzedniego pomiaru dla przycisku na pinie 5 const unsigned long opoznienie = 300; // czas opóźnienia w milisekundach int zw_na_warstwe = 0; void zwoje() { unsigned long aktualnyCzas = millis(); if...
[syntax=arduino] delay(odczytanaWartosc * 200); //Uzależnienie czasu oczekiwania od ADC [/syntax]
Nie działa Ci z to z millis bo może źle używasz. Jak masz przez 200ms kręcić kołem to wstawiasz w loop funkcję, która włącza kręcenie kołem i zapisuje czas startu, w kolejnych wywołaniach sprawdza czy już minęło od chwili startu 200ms i ewentualnie wyłącza kręcenie kołem. Jak coś zablokuje loop na np. 20ms to o tyle będzie maksymalny błąd pomiaru, z...
A dlaczego nie chcesz uzyc delay?
Usuń linijkę następną po delay(1000);
Witam, poniżej program, którego celem jest zliczanie impulsów zewnętrznych. Problem polega na tym, że po skonfigurowaniu rejestru TCCR0B, program się blokuje ( nie ma komunikacji z monitorem portu). Jeśli ktoś ma pomysł na to, to będę wdzięczny. void setup () { TCCR0B |= (1 << CS02) | (1 << CS01) | (1 << CS00); Serial.begin(9600);...
Szukaj "Blink Without Delay" czyli to co kolega wyżej opisał.
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.
Jak spowodować aby PIERWSZY odczyt np. komórki "0" nie wyświetlał 255 ? Zapisać wymaganą wartość wartość. - na etapie programowania lub odpowiednią funkcją sprawdzającą czy eeprom jest czysty. [syntax=arduino] if(EEPROM.read(0)==255) //czy eeprom jest czysty ? { EEPROM.write(0,0); // ... co tam trzeba EEPROM.commit(); delay(200); } [/syntax]
Witam, Może pokaż kod, będzie łatwiej coś poradzić. W czym programujesz? Arduino IDE? Jeżeli dobrze rozumiem, ma być tak: - LED od dołu zaświecają się po kolei z małą przerwą (coś ala linijka) - Najwyższa (po zaświeceniu się poprzednich) miga 3 razy, ale powoli się rozjaśniając i przygasając Widzę, że masz tam PWM, więc ogólnie i bardzo łopatologicznie,...
Każdy program Arduino zachowuje się, praktycznie jak standardowy program C++. W C++ wystarczy komenda: LED_BUILTIN . Kliknij prawym przyciskiem myszy na LED_BUILTIN i wybierz z menu "Go to definition". Przeniesie Cię do pliku pins_arduino.h . Zobaczysz tam, że LED_BUILTIN ma wartość 13. digitalWrite(ledPin, ledState); "Go to definition" na tej funkcji...
Przepraszam moi drodzy, chodzi mi o delay w Ardurino :) Arduino :-) Nie ten dział kolego! Informacje o delay znajdziesz [url=lmgtfy.com/?q=arduino+delay]Arduino delay Na odpowiedź naprowadzi też [syntax=c] void _delay(U32 ms) { struct timer_t* priv = &TIMER; U32 expire_at_tick = priv->tick + ms / priv->MS_PER_TICK; while (priv->tick <...
Niestety kod działa w taki sposób, że zapalają się wszystkie zadeklarowane LEDy, a nie jedna po drugiej (oczywiście migają). Wszystko się zgadza. Tak, właśnie napisałeś kod :) Musiałbyś w pętli loop obsługiwać dwie dodatkowe zmienne, które wskazują na konkretny kolumnę i rząd dla leda, która ma się zapalić, a po 500ms zgasnąć - te zmienne musiałaby...
Pomiar odległości wykonywany jest dziesięciokrotnie z półsekundowymi przerwami między pomiarami, co daje łączny czas trwania tej sekwencji = 5 sekund. To prawda. Rozwiązanie to zastosowano zapewne dla lepszego zobrazowania zmian odległości w terminalu. Dla prób może zostać ale w docelowym kodzie lepiej wykonywać jeden pomiar w każdej iteracji pętli...
Tak jak w tłumaczeniu języków nie da się lub nie trzeba/nie powinno trłumaczyć dosłownie tak i programowaniu dosłone tłumaczenie najczęściej nie jest optymalne. Dlatego proponuję [syntax=c] //$regfile = "m32def.dat" ' procesor //$crystal = 8000000 'kwarc //powyższe ustawić w IDE uint8_t I; //Dim I As Byte ' zmienna I DDRA = 0xFF;//Config Porta = Output...
Niestety delay
Proponuję użyć np. millis() zamiast delay. [syntax=c]if(millis() - poprzedni >= 300000 { poprzedni = millis(); // procedura wysyłania danych } [/syntax] Zmienna poprzedni zdefiniowana jako typ unsigned long [syntax=c]unsigned long poprzedni;[/syntax] W ten sposób nie będziesz blokował działania całego programu jak to czyni delay. Pozdr
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.
Przeanalizuj(zastosuj) przykładowy szkic "blink without delay". Zrezygnuj ze stosowania funkcji delay na rzecz millis , micros.
To zapomnij o delay. Opisane na elektrodzie 1e9 razy. hint:milis
https://obrazki.elektroda.pl/9235682700_... Przedstawię tutaj poprawki, uruchomienie i rozwinięcie biblioteki ArduinoHttpServer na platformie Arduino R4 WiFi. Celem tematu będzie ułatwienie nam operacji związanych z protokołem HTTP, a dokładniej parsowania żądań HTTP (przetworzenie nagłówka, ścieżki zasobu oraz argumentów GET) oraz...
Są 3 możliwości: 1. Delay ma ograniczenia (nie znam Arduino), ale tutaj nic nie jest napisane: http://arduino.cc/en/Reference/Delay 2. Masz włączony preskaler rejestrem CLKPR – Clock Prescale Register ale tego nie widać w programie. 3. Fusebity ustawione sa na wewnętrzny generator 8MHz, a nie na zewnętrzny kwarc. Tak jest w Twoim przypadku. Łatwo...
Nie używać delay() W czym piszesz ? Przykład bez delay() dla arduino https://www.elektroda.pl/rtvforum/viewto...
(at)ElektrodaBot napisz proszę program na arduino by migał wbudowaną diodą led z okresem 5s i wypełnieniem 50% bez używania delay()
Widzę, jest w tytule "micro". Tak jak napisałeś, "01 0C" zwraca aktualne obroty, ale to nie są przecież dwa bajty, tylko pięć, albo sześć (ze spacją). Wysłać musisz coś takiego: "01 0C\r". Możesz spróbować testowo tak: [syntax=arduino] Seria1.write("01 0C\r"); if (Serial1.available()) { Serial.write(Serial1.read()); } delay(1000); [/syntax]
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().
Teraz pytanie trudniejsze. Chciałbym, żeby SMS wysyłał się na kilka numerów telefonów. Proszę o podpowiedź jak zmodyfikować kod. Najłatwiej to powielić funkcję sendSMS, dodać jej kolejny numer oraz numer telefonu na który ma wysłać SMS-a. [syntax=c] void loop() { if(digitalRead(przycisk)==LOW) { sendSMS(); Serial.println("wysylanie SMS a "); delay(6000);...
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...
Jak napisać program z uwzględnieniem wejścia "Pin 5" oraz licznika który mam w programie nie zatrzymując całego programu "delayem". Odliczać czas przy pomocy millis() w pętli loop() zamiast stosowania delay(). https://www.norwegiancreations.com/2017/...
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...
Witam, tu jest twoj problem: if ((Count * 8.75)/100 > a ) { sp1=!sp1; digitalWrite(przekaznik1, LOW); delay(15000); } Po co ten delay(15000)? to stopuje caly kod na 15s ! Pozdrawiam
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.
[syntax=c] void loop(){ while(digitalRead(kontaktron)); for (int i=0;i<255;i++) { analogWrite(led, i); delay(30); } while(!digitalRead(kontaktron)); } [/syntax]
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.
..a tak łopatologicznie co powinienem napisać żeby zadziałało? dziękuje za wyrozumiałość No to proszę, będzie łopatologicznie, chociaż nie pedagogicznie :-D [syntax=c]void setup() { TCCR1A = (1 << WGM11) | (1 << WGM10) | (1<<COM1C1); TCCR1B = (1 << WGM12) | (1 << CS11) | (1 << CS10); pinMode(13, OUTPUT); } void loop()...
Bo nie masz loop () ;) Ja to wstawiłem tylko dla przykładu jaka jest semantyka. Zatem wgraj to, tylko zmień sobie na odpowiedni nr pin do którego masz podłączoną diodę : [syntax=c]/* Dependencies */ #include <Wire.h> // Required for I2C communication #include "PCF8574.h" // Required for PCF8574 PCF8574 expander; void setup() { expander.begin(0x38);...
Co tu może być nie tak ? Nie wiem, ........ - troche brakuje i niedokładny syntax. Wytestuj ten poniżej fragment kodu: [syntax=c] //,.......... void loop() { if (digitalRead(przycisk) == LOW) { Serial.println("wysyłanie SMS'a "); delay(200); sendSMS(); } } void sendSMS() { mySerial.print("AT+CMGF=1\r"); delay(100); for (int i = 0; i < 2 ; i++) {...
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...
Ale jak to zrobić bez delay ? jak kod mogę zastosować?
Migaj diodą w przerwaniu timera, a nie w pętli z delay().
Najprostsza modyfikacja kodu który przedstawiłeś (ten wykorzystujący AccelStepper) polega na zmianie ze "stepper.stop()" na "stepper.run()" za "stepper.move(-2000)" oraz dodaniu przed "stepper.move(-2000)" opóźnienia (najprościej w formie "delay(5000)"). [syntax=c]if (backwardState == HIGH) { delay(5000); stepper.move(-2000); stepper.run(); } [/syntax]...
Każdy zegar powinien być stabilizowany kwarcem, bo inaczej będzie zbyt niedokładny, więc wybór dotyczy tylko tego, jaki kwarc wybrać i jak częstotliwość podzielić, i ile to będzie pobierało prądu, jeśli zasilanie ma być bateryjne. Arduino ma kwarc, ale używanie funkcji delay daje niedokładne wyniki, trzeba używać lepszych technik. Przykładowe schematy:...
Zamiast delay() użyj millis(). Przykłady->0.2 Digital->BlinkWithoutDelay.
Czy wyświetlacz w ogóle prawidłowo reaguje można sprawdzić poprzez wysłanie komendy: [syntax=arduino]writeCommand(KS0108_CMD_... , 1); delay(2000); writeCommand(KS0108_CMD_DISPLAY_ON ,1 ); [/syntax] W tym przykładzie 1 oznacza CS1 (używając orginalnej biblioteki czyli #define KS0108_Chip_1 1).
Chcę aby na Attiny 2313a i Atmega 8a był program z użyciem millis , nie delay , w j.C ,i aby nie było to w Arduino. Multiwibrator astabilny bez delay a z millis na PB3 i PB4 ,zmiana polaryzacji między tymi pinami co 64 sekund ,lub koło 64 sekund. Taki program jak poniżej w j.C ,(nie Arduino ) , tylko bez delay a z millis [syntax=c]#include <avr/io.h>...
W żadnej linijce nie czyścisz LCD a powinieneś, zamiast czyszczenia też można używać nadpisywania spacjami (ten sposób jest szybszy niż clear) ale u ciebie myślę że nie trzeba tak kombinować bo masz długi delay, chociaż warto tego się nauczyć. Spróbuj tak zrobić. Clear(); da migotanie LCD. Nadpisywanie i formatowanie jest lepszą opcją... Prościej by...
Ja bym zrobił tak: Wówczas co dziesiąty raz dioda świeciła by przez czas delay1 + delay2 [syntax=c]void loop() { count1 ++; // zwiekszamy licznik digitalWrite (ledPin, HIGH); //zapalamy diodę led delay (delay1); //czas świecenia = delay1 if (count1 == 10) //jesli dziesiata pętla { delay (delay2); // wydłużamy czas świecenia led o delay2 count1 = 0;...
Nie wytłumaczyłeś dokładnie co twój program ma robić więc ja zrozumiałem po swojemu a jeśli tak to totalnie bez sensu jest odczyt tych danych. Spróbuj tak: [syntax=c]void loop() { Serial.println("Podaj x/10, barbot ma nalac z 1 butelki"); while (!Serial.available()); wlej(7, Serial.read()); Serial.println("Podaj x/10 z drugiej butelki"); while (!Serial.available());...
Tam są dwie funkcje: void _delay_ms (double __ms) void _delay_us (double __us) A Twój demo program jest napisany dla arduino. Arduino ma zaimplementowane delay: void delay(unsigned long ms) { uint32_t start = micros(); while (ms > 0) { yield(); while ( ms > 0 && (micros() - start) >= 1000) { ms--; start += 1000; } } } Co i tak nie rozwiązuje problemu...
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...
..Koledzy proszę o napisanie programu dla dowolnego przycisku analogread który nie będzie wysyłał stanów w nieskończoność tylko kiedy ten stan się zmieni. .. trochę łopatologicznie - ale teraz zaskoczysz o co chodzi [syntax=c] bool flaga = true; void setup() { Serial.begin(9600); } void loop() { if (analogRead(A0) > 1000 && flaga == true){...
A po 2wszystkoe piny cyfrowe mam zajete Każdy pin może być "cyfrowy", to znaczy działają na nim "cyfrowe" operacje. Mógłbyś również zrezygnować z funkcji "delay", które blokują działanie programu. Można używać "millis" albo "micros", jest przykład "blink without delay", który mógłbyś sobie twórczo zmodyfikować.
Witam, Po kolejnym wciśnięciu i==3, i=1. Próbowałem, ale mi nie wychodziło. Proszę o pomoc i z góry dziękuję. Możesz napisać np. tak: [syntax=c] enum {W_LEWO, W_PRAWO} kierunek = W_LEWO; ... if (W_LEWO == kierunek) { if (/*tu sprawdzasz czy przycisk został naciśnięty*/) { //włącz_silnik_w_lewo(); } else if (/*tu sprawdzasz czy przycisk został puszczony*/)...
(at)khoam Tak będzie wyglądała: void setup() { Serial.begin(9600); } void loop() { Serial.println("{zmienna1&... // Jakiś delay dać? // Funkcja .println czy może .write? } Dodano po 14 (at)khoam Dodałem do Arduino delay(10); do pętli głównej....
Przycisk nie zadziała dopóki nie skończą sie delay(). Pozdr
Na pierwszy rzut oka nie zdołasz tego zrobić jeśli używasz funkcji delay(). Jeśli masz zamiar zrobić tak by wszystko razem działało to musisz zastąpić delay() czymś własnym z użyciem millis() ale to nie jest takie proste żeby to zrobić w 5 minut bo jeszcze trzeba jakoś zintegrować oba efekty migania i pwm w jednej pętli, pobrać sobie czas funkcją millis()...
(at)krzysiek78-1978 Nie blokujesz warunku w 1 if. Po naciśnięciu musisz zmienić stan lastButtonState na przeciwny aby pętla nie wykonywała się cały czas. Po puszczeniu w else zmieniasz na początkowy. [syntax=c]if (buttonState != lastButtonState) { if (buttonState == HIGH) { buttonPushCounter++; lastButtonState=1; Serial.println(buttonPushCounter);...
(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,...
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.
Po prostu na samym końcu dopisz brakująca klamrę } Choć cały kod jest nieco bez sensu .. po co dwa takie same warunki if (irrecv.decode(&results)) ?? Raczej powinno być coś takiego : [syntax=c]void loop(){ if (irrecv.decode(&results)) { switch (results.value) { case 0x6604CFE3: Serial.println("LedyPrzednie"); diodaStatus = ~diodaStatus; delay(1500);...
(at)omnixcrs Mam taką luźną propozycję. Podziel kod odbiornika na zadania: sprawdzenie WiFi, odczyty z poszczególnych czujników etc. Dla każdego z nich zdefiniuj wymagany, maksymalny interwał czasowy (lepiej krótszy niż dłuższy - ESP8266 ma szybki MCU). Użyj biblioteki TaskScheduler do zarządzania zadaniami - chodzi na ESP8266. W mojej stopce znajdziesz...
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...
Zgadza się, ale autor miał już problem z ogólnym działaniem programu. Wybór delay, millis, czy przerwania timera, to raczej szczegóły. Kod z #6 zadziała tak samo, ale łatwiej do niego dojść. Chyba. Pozdrawiam.
Najprostszy program do zliczania impulsów pojawiających się na pinie 2 (Arduino Uno): [syntax=c] constexpr uint8_t pin = 2; volatile uint32_t pulse = 0; void setup() { Serial.begin(115200); pinMode(pin, INPUT_PULLUP); attachInterrupt( digitalPinToInterrupt(pin), []() { pulse++; }, RISING); } void loop() { delay(1000); Serial.print("Pulses per second:...
Dobra, jednak użyłam timera i wszystko ładnie działa.
O ile dobrze zrozumialem autora to przecież to mozna zrobić bez przerwan na trzech "switchach". Bez użycia funkcji delay i musi dzialac. Wielowatkowasc do sterowania światłem? Bez przesady
Przecież już używasz instrukcji pętli, czyli "for". Twoja sekwencja trwa 40 mS, policz ile razy musi się wykonać dla 1 minuty i tyle razy wykonaj pętlę "for", w której będzie ta sekwencja. Trochę bardziej sprytnie można napisać ten program bez użycia "delay", ponieważ jest to generalnie słaba praktyka. Można wykorzystać funkcję "millis", możesz spróbować...
Jak podam mu czas 2ms czyli delay(2) to wówczas urządzenie będzie działać 2ms, tak? W dużym uproszczeniu, tak. Pozdr
Bardzo możliwe że tak Czyli mam wprowadzić jakieś opóżnienie typu "Delay" czy jakoś inaczej ?
Przy tym programie nie ma to najmniejszego sensu. [syntax=c] prevmilis = millis(); while(millis() - prevmillis < delay);[/syntax]
Mój program jest oparty o program mirka tylko attiny13 ma jeden timer i dlatego używam delay. Arduino ide to nie rozwiązanie . Chcę wiedzieć dlaczego to tak źle działa.
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...
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.
po podłączeniu enkodera i obracaniu nim w monitorze portu liczby przeskakujaca co 4 a nie co 1 Delay (zmora Ardinowców) robi swoje. Co masz na myśli ? Zmiana czasu albo dodanie kolejnej funkcji delay nie zmienia nic . Próbowałem coś x tym wymyślić :) Dodając kolejne delay pogorszyłeś sytuację. Napisz kod bez delay.
Jak to zrozumiesz to sobie sam napiszesz :) [syntax=c] long odliczanie = 0; // zmienna long do zapisania czasu pojawienia się '1' void setup() { Serial.begin(9600); // komunikacja serial baudrate 9600 } void loop() { if (Serial.available()){ // jesli ktoś coś wklepał w serial monitorze char p = Serial.read(); // odczytaj to co wklepał i zapisz jako...
chodzi płynniej bo w jego kodzie nie ma instrukcji delay(400)
Witam, na kolanie sklecilem taki programik, sprawdz go. Upewnij sie ze masz dobry interface MIDI. Moze jeszcze prostrza wersja czy cokolwiek wysyla: [syntax=arduino][/syntax]... void setup() { // Set MIDI baud rate: Serial.begin(31250); } void loop() { noteOn(90, 55,127); delay(200);...
Witam Mam takie zapytanie a mianowicie w arduino chcę zrobić taki kod, że po wciśnieciu guzika i puszczeniu cyfry zaczynają mrugać a ponownie wciskam i puszczam guzik nie mrugają. Doszedłem do tego, że przy trzymaniu guzika cyfry mrugają a chcę aby nie trzeba było trzymać. Jestem początkujący w programowaniu, więc proszę o wyrozumiałość. Załączam część...
Musisz w funkcji setup() dodać:[syntax=c] pinMode( A5, OUTPUT);[/syntax] Następnie w funkcji blinkTargets() coś takiego:[syntax=c] digitalWrite( A5, HIGH); delay(50); digitalWrite ( A5, LOW);[/syntax] To tak na szybko...
Gdy wyświetlasz temperaturę, ustawiaj kursor tylko raz, np : [syntax=c]lcd.setCursor(1,8); lcd.print(temperatura); lcd.print("C");[/syntax] Wtedy niezależnie od tego, ile cyfr się wyświetla, ze znakiem czy bez, wyświetlacz wyświetli całość poprawnie. Po prostu będzie się wszystko przesuwało w prawo, od współrzędnej ustawionej przez lcd.setCursor() ;...
Nie, delay() przyjmuje, jako parametr long, czyli 4 bajty na Arduino.
Zmieniłem na 1 rezystor 100 Ohm, na innym komputerze udało się odpalić arduino nano. Więc tak : irsend.sendSony(0xB4B8F, 20); Udało się :) Trzeba wysłać kilka sygnałów żeby zareagował: taki kod działa jak trzeba: for (int i=0; i<3; i++){ irsend.sendSony(0xB4B8F, 20); delay(1); } Tak, autentycznie; niektóre urządzenia 'SONY" wymagają 3-krotnego wysłania...
Zamiast delay() możesz użyć millis(). Biblioteki dla wielowątkowości też znajdzesz. Dla krokowców możesz użyć biblioteki AccelStepper: http://www.airspayce.com/mikem/arduino/A... Dostępne biblioteki możesz przeglądać w menadżerze: https://www.arduino.cc/en/Guide/Librarie...
tak zmieniłem i dalej nie działa (no chyba że źle coś zrozumiałem).. Najpierw ustawiasz dane, potem EN= 1, potem EN = 0, potem delay. Aby wyświetlacz miał czas wykonać komendę przed dostaniem następnej.
Ok, dziękuję, czyli w If brakuje drugiego"=". For całkiem "skopałem" ! Dzień dobry ! Czy i w jaki sposób zmniejszyć czas ? do np. 10mikrosekund w takim fragmencie programu: digitalWrite(2, LOW); delay(1); digitalWrite(2, HIGH); delay(1);
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)...
Wrzucajcie proszę kod w znacznikach "code" (do wyboru z menu edytora postu). To już drugi w tym tygodniu który zlewa się z tekstem posta. //Sprawdzenie wciśnięcia przycisku otwierania/zamykania furtki void KontrolaPrzycisku () {if (digitalRead(OpenCloseFurtkaButt... == LOW) {delay(50); while(digitalRead(OpenCloseFurtk...
Powinno być to np.: [syntax=c] #include <DS3231.h> #include <Time.h> #include <Wire.h> tmElements_t czas; RTClib RTC; void setup() { czas.Second=0; czas.Minute=0; czas.Hour=12; czas.Wday=1; // day of week, sunday is day 1 czas.Day=23; czas.Month=06; czas.Year=49; Wire.begin(); Serial.begin(9600); } void loop() { DateTime now = RTC.now();...
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?
Nie kombinuj tylko poczytaj dokładnie o AccelStepper. Poniżej silnik jedzie do opozycji 1000, wracając do pozycji 0 zatrzymuje się na pozycjach 600 i 400. [syntax=c]void loop() { stepper.moveTo(1000); stepper.runToPosition(); delay(200); stepper.moveTo(600); stepper.runToPosition(); delay(200); stepper.moveTo(400); stepper.runToPosition(); delay(200);...
delayMicroseconds() wprowadza opóźnienia w mikrosekundach, a nie milisekundach. Powinieneś użyć delay() zamiast delayMicroseconds().
Mianowicie chcę podłączyć arduino jako klawiatura space jako button. Chodzi mi o to ,że kiedy nacisnę przycisk to na komputerze klika się space. Szukałem już rozwiązań po stronach ale nic nie chce działać. Nie wnikam w to co jest na stronce instructables, z której korzystasz. Ale jeśli tylko o spację Ci chodzi, to sugeruję użyć szkicu z tego przykładu,...
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...
#include <Wire.h> // standardowa biblioteka Arduino #include <LiquidCrystal_I2C.h> // dolaczenie pobranej biblioteki I2C dla LCD LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); void setup() } void loop() } lcd print ("ogniwo") int wartosc = analogRead(A0) float wolty = wartosc / 204.8; { lcd print ("ogniwo"); delay(500);...
Ja więc sensu takich płytek nie widzę. Bo Ty się nie musisz uczyć podstaw programowania i "jak się to je", bo już dawno masz to opanowane i pewne rzeczy robisz intuicyjnie. A początkujący adept programowania, jak mu się uda zamigać pięcioma diodami z różną częstotliwością bez użycia zmory Arduino czyli delay() będzie szczęśliwy, że opanował nową umiejętność...
Z tego co mi się wydaję aby działało delay tzreba dać #include <util/delay.h>
Problemem jest to że zapewne nie przerobiłeś nawet żadnego kurusu z arduino. Gdy wywołujesz delay() to program "stoi" w tym miejscu dopóki nie minie zadany czas. Załaduj program do symulatora: https://www.sites.google.com/site/unoard... to zobaczysz w czym tkwi problem.
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...
funkcja delay arduino funkcja delay przerwanie delay
internet zawiesza pasta bezołowiowa tl074 lm324
liebherr zamrażarka stilo bezpieczniki
Lokalizacja kabla minusowego kierunkowskazów w skuterze 4T Zmywarka Sharp QW-GD521472X-DE błąd F9 - przyczyny