No jasne. A to co? if (buttonPresses) { case 0: switchmode1=1;
To dioda nadawcza a nie odbiorcza...
Do pomiaru krótkich czasów czy z dużą rozdzielczością używa się przechwytywania w timerach a nie pulseIn(). Podaj jakieś przykłady :?: Z pamięci nie napiszę a na szukanie po projektach i wycinanie istotne fragmentów kodu szkoda mi czasu. Ustaw timer w tryb przechwytywania. Jeśli chcesz mierzyć czas jednego z poziomów, w przerwaniu zmieniasz zbocze....
W tym trybie timer po prostu zlicza impulsy zegarowe do niego doprowadzone, jeśli przekroczy zakres to zgłasza przerwanie overflow (nadmiaru) i rozpoczyna zliczanie od nowa. Funkcja obsługi tego przerwania zlicza je zwiększając liczniki f - przechowujący czas z rozdzielczością <1ms i m przechowujący liczbę milisekund. W programie należy korzystać...
Ludzi, którym nie działały if'y było już tu wiele;) Jeżeli nie wierzysz w tą funkcję z arduino to powinieneś ją przetestować czymś znanym. Np: [syntax=c] String stringOne = "February 18, 2016|36|N/A|N/A|67%|29|ESE at 7|30.12|Partly Cloudy|17.0|06:40 AM (CET)|04:43 PM (CET) "; if(stringOne.indexOf("|Partly Cloudy|")>=0) Serial.println("|Partly Cloudy|");...
Z tym akurat nie mam problemu. Piny 0 i 1 wykorzystuję w programie i jest OK. Z tego co wiem to USART trzeba aktywować w programie. Dodano po 15 Ale tak po przemyśleniu lepszym rozwiązaniem jest Watchdog odpowiednio ustawiony. Programowy reset wymaga aktywowania w przerwaniu i żeby to zadziałało musiał bym aktywować odpowiedni pin. Jeśli miało by to...
Funkcja tobin To jest źle: unsigned int bitval = 65535; Ponieważ binarnie jest to 16 jedynek, a dalszy ciąg tej funkcji wyraźnie robi bitowe AND z tą liczbą po czym bitowo przesuwa w prawo, by na tej podstawie sprawdzić czy na danej pozycji jest 0 czy 1. Łatwo się domyślić że powinna tutaj na starcie być liczba gdzie MSB = 1 a reszta = 0. Czyli (najprościej...
Czyli co mam zrobić? Przemapuj ograniczony zakres ruchu i traktuj to jako pełny(!) W Arduino isnieje do tego funkcja 'map'. e marcus
To pojawia się więcej opcji oraz UF2; Tu też nie rozumiem kompletnie filozofii pojawiania się w opcji Port, tego niby urządzenia UF2. Bo sama metoda wgrywania, że przez kopiowanie pliku wsadu (.uf2) na dysk, jest wybrana już w innej opcji Upload Metod. A do opcji Port trzeba wciąż wchodzić jeśli np. korzysta się z monitora portu i przełączać co chwilę....
Pokaż swoje próby, schemat podłączenia. Na początek wystarczy obsługa millis(), timery sprzętowe można zostawić na coś wymagającego dużej precyzji, odliczenie 60s nie musi być wyliczane z dokładnością pojedynczych cykli zegara uC. Pisanie na prive to kiepski pomysł, jeśli moje rozumowanie jest błędne tutaj od razu ktoś to poprawi . Akurat w Arduino...
jak napisać program w arduino powodujący miganie diody 10 razy a następnie kończący działanie? Wstępna ocena dostępnych informacji Przeanalizowałem Twoje pytanie dotyczące napisania programu w Arduino, który spowoduje miganie diody 10 razy, a następnie zakończy działanie. Celem jest stworzenie programu sterującego diodą LED, który wykona określoną...
Jęśli chodzi o pytanie nr 3 to tak Dodano po 7 Bezpośrednia odpowiedź na pytanie Aby jednocześnie wyświetlać prędkość obrotową (RPM) wentylatora oraz ustawioną moc (np. w formie procentowego wypełnienia PWM) na wyświetlaczu dotykowym podłączonym do Arduino Mega, należy: - Zliczać impulsy z tachometru (pin TACH) wentylatora, przeliczać je na obr./min...
1. Chcesz generować PWM o częstotliwościach 50-330hz, to oznacza, że musisz zmieniać impulsy co określony czas (T=1/f): odpowiednio 20ms-3ms. 2. Wg dokumentacji Arduino funkcja map() działa na long integerach i jest zadeklarowana jako: [syntax=c]long map(long, long, long, long, long);[/syntax] Użycie float nic dobrego tu nie da. 3. Warto nazywać zmienne...
Ta funkcja jest już zintegrowana (zobacz poniżej), tylko definicje portów należy odpowiednio skorygować (dopasować do schematu dołączonego w pierwszym poście). https://rweather.github.io/ardpicprog/pr... Dodano po 18 Na tej stronie łatwiej się połapać. https://rweather.github.io/ardpicprog/in...
Wejście Arduino do wejścia transoptora? Jakoś nie widzę, by to mogło działać. Problemem są zakłócenia wchodzące do Arduino. Przy ograniczeniu do wbudowanego pullup-u wejścia bywają podatne na zakłócenia. Transoptor chyba na to mało pomoże, choć może mógłby - jakby droga od wyjścia transoptora do pinu Arduino była krótka, lub zaekranowana. Program lepiej...
Spróbuj poniższego kodu. Co prawda napisałem go "na kolanie", sprawdziłem tylko czy się kompiluje, ale zapewne zawiera kupę błędów. Idea jest taka, że wywołujesz wielokrotnie funkcję IrReceive(), aby odczytać pojedynczy bit z IR. Funkcja zwróci true, gdy odczyta pełne 11 bitów (również bit startowy w pozycji LSB; musisz sam sprawdzić, czy bit startowy...
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...
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...
Twoj problem w większości wynika z drgania styków. Maskowanie drgań styków jest dobrą (albo nawet niezbędną) praktyką ale problem jest chyba inny kiedy naciskam przycisk pętla while wykonuje się kilka razy No i prawidłowo, while "kręci się w kółko" kiedy warunek jest spełniony, czyli przycisk jest wciśnięty. Powyższa uwaga autora sugeruje, że instrukcje...
Spróbuj ten kod /* Ver. 1.02 - 2020-03-29 Kod emulujący kierownicę Thrustmaster TMX Pro, umożliwiający podłączenie Arduino do bazy TMX Pro i emulację naciśnięć przycisków. */ #include <Arduino.h> byte wheelState[8]; // Stan przycisków volatile byte next_byte; volatile byte next_byte_idx; // Zmienne do debouncingu byte lastState[2] = {0xFF, 0xFF};...
A to jeszcze brakuje kodu komunikującego się przez FS100A, bo załączyłeś kod, który u Ciebie działa. Przydałby się jeszcze schemat pokazujący, jak wszystko połączyłeś, bo widać kilka potencjalnych błędów, jak brak rezystorów podciągających. Dodano po 8 Jeszcze jedno: funkcja pulseIn(), z której korzystasz zwraca 0, gdy przez 1s aktualnie biegnący sygnał...
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.
(...) mmand ); Serial.print(command , HEX); Serial.print(" "); } Serial.println(); } void displayOxygenPercentage(float percentage) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Tlen: "); lcd.print(percentage, 1); // Wyświetlenie jednego miejsca po przecinku lcd.print("%"); } Poniżej znajdziesz pełny, scalony kod, który łączy obie części - dotychczasową...
Propozycja funkcji: Dodano po 24 Czytałem coś o stream i połączeniu USARTów, ale nie bardzo rozumiem. Dla klas Serial oraz SoftwareSerial nie ma zdefiniowanych operatorów strumieniowych w Arduino Core.
Zastanawiam się czy nie powinienem użyć Arduino FreeRTOS, ale nie wiem czy to jest rozwiązanie mojego problemu. Jeśli planujesz sobie odstrzelić kolana, to jest to doskonały pomysł. Próbowałem już timerów i funkcji mils, ale wydaje mi się że to nie jest właściwa droga W tym przypadku to najwłaściwsza droga. Problem należy podzielić na kilka niezależnych...
Nie używaj polskich liter w programowaniu Jedynie co można do komentarzy ustawiać. Co do adresu to użyj scanera do sprawdzenia, to program który się wgrywa do Arduino a później on odczytuje adresy z urządzeń, odnośnie jeszcze tych znaków Pokaż cały kod. Dodano po 5 #include <Wire.h> #include <LiquidCrystal_I2C.h> // Ustawienia wyświetlacza...
Obawiam się, że najsensowniejszym wyjściem jest zakup odbiornika posiadającego co najmniej 7 kanałów, dostosowanego do nadajnika. Skoro chcesz zmienić nadajnik, to wybierz zestaw z odbiornikiem dopasowanym do modułu dalekiego zasięgu, o odpowiedniej ilości kanałów. Ilości kanałów nie przeskoczysz. Aczkolwiek, jest możliwość zaprogramowania mikroprocesora...
Dla pewności, żeby się nie "mieszały"? Reset tak w skrócie powoduje, że aktualnie wgrany program zaczyna się wykonywać od początku, Co w przypadku Arduino oznacza, że najpierw się zadeklarują zmienne globalne, potem wykona się część kodu zawarta w funkcji setup() a następnie procesor będzie wykonywał raz po raz to, co jest zapisane w funkcji loop()....
Też tak rozumiem z załączonych do aukcji obrazków. 40 ziko trochę drogo. :) Za tyle to już kupisz klona arduino i wyświetlacz. Myślałem raczej o czymś takim https://allegro.pl/produkt/generator-pwm... . Ma 2 kanały z sygnałem zamiast 1. Możesz też podłączyć do układu, który już masz,...
No i już jest nieźle. Po każdym załadowaniu programu mam monit ARDUINO IDE o zbyt małej ilości pamięci. Funkcja tego ostrzeżenia jest wbudowana w arduino i może być zmieniona edytując plik 'preferences.txt'. Trzecia, albo czwarta linia w tym pliku. Default jest ustawiony na 75%. Czy bardzo skomplikowane było by usunięcie opcji " SCOREBOARD" , a w jej...
czyli o ile dobrze myślę, to tutaj bym wartość miał nie zwracaną bezpośrednio przez funkcję, ale musiałbym podać "wskaźnik" do zmiennej w argumencie funkcji i moja funkcja zapisze wartość do tej zmiennej. A sama funkcja mogła by zwracać swój stan 0 - udało się wykonać funckję prawidłowo; 1 - "jakiś tam błąd". Ale to jest proste do zrobienia. Najpierw...
Dostosuj sobie do własnych potrzeb. Funkcja wywoływana co 1s. Tu akurat obliczana jest energia czyli Wh. [syntax=c] void telemetria() { // korekta czasu o faktyczny czas pomiedzy wykonaniem funkcji w stosunku do zakladanego (1000ms) ostatniCzas = obecnyCzas; obecnyCzas = millis(); energia += (float) W_AC * (obecnyCzas - ostatniCzas) / 3600000.0; } [/syntax]
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.
Jeśli jesteś jedynym użytkownikiem programu i umówisz się sam ze sobą, że robisz tylko to co program przewidział, to jest OK. Jeśli w czasie wyboru jako źródła sterowania potencjometr, ktoś będzie wysyłał liczby przez UART, to funkcja będzie odbierać znaki i dodawać do napisu OdczytajMonitor. Napis rośnie bo go nie zerujesz w case 1, realizujesz case...
Czy zastosowanie millis zamiast dealy pomoże. Jeszcze bardziej sobie skomplikujesz sobie kod przez ręczne naliczanie poszczególnych interwałów. Patrz post #14. Opóźnienia uruchomiania jest celowe bo w tym czasie startują dodatkowe urządzenia peryferyjne. Funkcja setup() to nie problem, problemem jest to, co jest w loop().
http://obrazki.elektroda.pl/2570476900_1... Czasami, niektóre projekty wymagają rozdzielenia jakichś zadań na kilka modułów Arduino lub umożliwienie im wzajemnej komunikacji. Interfejs IIC ( Inter-Integrated Circuit ang. pomiędzy układami scalonymi) czyli I²C jest idealnym rozwiązaniem tej kwestii. I²C to bardzo interesujący...
Funkcja digitalRead ma drugi parametr bool forceReadNow z domyślną wartością false, co jak sądzę, "buforuje" operację odczytu. Spróbuj odczytywać wejścia z ustawionym parametrem [syntax=c]flap.digitalRead(P7, true) == 0 //albo krócej i bardziej znośnie dla oka !flap.digitalRead(P7, true)[/syntax] Sposób inicjacji wejść (z pullupem czy bez) też jakoś...
Physical PIN - 9 tak jest oznaczony numer tego pinu w PDF od producenta układu. GPIO14 tego możesz użyć w Arduino jako pinu digital 14. Jeśli użyjesz pinu SCK to on może być zdefiniowany jako liczba, dla sprawdzenia robię Serial.println(SCK) i wiem co dana płytka ze swoimi definicjami "ma na myśli". "SCK" jako alternatywna funkcja danego pinu skrywa...
Jeżeli używasz klasy Serial, to tam to już jest zaimplementowane. Jeżeli nie, tu uważaj na możliwe problemy linkera (duplicate reference, symbol already defined), bo domyślna funkcja main, ta, która w pętli odwołuje się do funkcji loop, ma referencję do klasy Serial i przez to, może nie być możliwe instalowanie własnej obsługi przerwania UDRE_vect,...
Zanim napiszesz kolejny post zaczynający się od "dlaczego mi nie działa", warto rozważyć, czy tak na prawdę użycie Arduino jest a) możliwym rozwiązaniem zadania, które sobie postawiłeś b) mieści się w zakresie Twojej wiedzy i umiejętności. Ten wątek utworzyłem, w celu pomocy udzielenia odpowiedzi na te dwa pytania, i zebrania w jednym miejscu linków...
To jest program pierwszy który działał do tej pory bez zarzutów ale są te nieszczęsne delay() i nie mogłem zastosować WDT do resetu bo przekracza 8 Sek. Skoro działa bez zarzutu, a chciałby zastosować WDT, to możesz użyć własnej wersji funkcji delay(): [syntax=c]void myDelay(unsigned long ms) { uint32_t start = micros(); while (ms > 0) { wdt_reset();...
W C można pisać obiektowo i poniższą klasę w C++: [syntax=c]#include <iostream> class Foo { public: // domyślny w C i C++ dla struktury Foo(int i_); // konstruktor int getI(); // getter void setI(int i_); // setter ~Foo(); // destructor private: // nie ma odpowiednika w C void bar(); // funkcja prywatna int i; // pole prywatne }; // constructor...
Jako że się trochę nudziłem to spróbowałem coś zrobić samemu i ustawiłem sobie PIN 8 arduino jako wejście i coś tam dopisałem do kodu, ale afekt jest do kitu, więcej nic nie wymyśle jestem zbyt głupi, efekt poniżej. Tak ogólnie to kierunek myślenia w miarę pozytywny. Ale kwestia szczegółów, które trzeba uwzględnić. Główna sprawa, to jest kwestia sygnału,...
LChucki napisał: Nie widziałem bibliotek na Arduino, które sprawdzałyby czy po zakończeniu RESET faktycznie magistral przyjęła poziom "H", Wyżej wymieniona przeze mnie biblioteka również to sprawdza - funkcja readScratchPad(). Nie sprawdza, a jedynie odczytuje. Co więcej, nigdzie przy odczycie temperatury nie ma juz sprawdzania CRC, więc poza stratą...
ELMAK Oskar 8w1 Spróbuję dzisiaj zaprogramować Logitech Harmony 350 i sczytać kody. Logitech ma prawdopodobnie większą bazę urządzeń niż ELMAK. Dodano po 6 Spróbuję dzisiaj zaprogramować Logitech Harmony 350 i sczytać kody. Logitech Harmony zaprogramował Marantz PM-66 oraz 75DC1010 (Cd Musicbox). Oba urządzenia dawały kody jak poniżej (heksadecymalnie):...
Funkcja Serial.print() z Arduino HAL przyjmuje jako argument zmienną typu int , która jest 32-bitowa w ESP8266, więc w funkcji tej następuje niejawna konwersja z typu int16_t do typu int . Dalej jest więc wyświetlana już jako wartość 32-bitowa. int16_t w formacie binarnym, to możesz użyć sekwencji funkcji: [syntax=c] Serial.print(highByte(dana), BIN);...
Funkcja pulseIn zwraca wartość w postaci unsigned long. Ty natomiast przypisujesz jej wartość do (signed) int. Czyli: -odczytana wartość może się nie zmieścić; -jeżeli odczytana wartość przekroczy połowę "pojemności" typu int, to zostanie zinterpretowana jako liczba ujemna. Pytanie, jakie długości czasów mierzysz? Ile mija czasu pomiędzy kolejnymi impulsami...
Przeleć stringa funkcja indexof. Najpierw zapisz w tablicy miejsca (indexy) w których masz "&" jak wezmiesz dwa elementy sasiadujące z tej tablicy to będziesz miał początek i koniec pary nazwa zmiennej i jej wartość. Dla wygody (choć niekoniecznie) skopiuj sobie ten fragment do innego string a tam kolejny raz funkcją indexof znajdz "=". teraz tylko...
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...
W jakim celu w funkcji czas() są zliczane minuty, godziny i dni? Ta funkcja jest każdorazowo wywoływana w loop(). Wyobraź sobie, że nie pisałem na tę okazję specjalnej funkcji tylko wkleiłem taką, jaką kiedyś użyłem. Oczywiście można usunąć część rzeczy i zyskać mnóstwo ns - znowu łapanie mrówek. Błędów nie obsługiwał kod autora wątku i szkoda, że...
funkcja arduino arduino tworzyć funkcja funkcja delay arduino
dioda piszcze ekspres krups evidence układ ładowania toshiba
kompresor airpress tmobile zakup routera
Pilot do wieży Philips nie działa po wymianie baterii Silnik benzynowy przerywa powyżej 2500 obr/min