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ć...
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...
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|");...
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ę....
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...
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...
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};...
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.
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ł...
(...) 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ą...
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...
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...
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...
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...
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()....
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...
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.
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...
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...
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.
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,...
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...
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]
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...
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...
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ś...
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();...
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);...
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...
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):...
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ą...
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...
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...
Nie mogę dać sobie rady z guzikiem który trzeba kliknąć dwukrotnie żeby włączyć diodę Możesz skorzystać z biblioteki [url=https://github.com/evert-arias/Easy... gdzie jest dostępna funkcja [syntax=c] onSequence(number_of_presses, sequence_timeout, onSequenceMatchedCallback) [/syntax] która powinna rozwiązać ten problem.
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...
Dobry wieczór wszystkim. Jestem elektrykiem z zawodu i świeżo upieczonym adeptem programowania arduino. Trochę już je poznałem i uruchomiłem kilka podstawowych programów, wszystko działa fajnie dopóki chcę, żeby program realizował jedną funkcję. Mam natomiast problem z połączenie powiedzmy dwóch programów, a aktualnie z takim oto. Mam płytkę arduino...
Witam, jestem początkujący w sprawie Arduino i proszę o pomoc w napisaniu króciutkiego programu, lub chociaż nakierowanie jaką funkcją to wykonać. Projekt jest taki, że gdy wciśniemy przycisk i nie puszczając go, program ma podać stan wysoki na jeden z pinów Arduino na jedną sekundę i po tym czasie ma podać stan niski bez pętli, przycisk będzie ciągle...
Próbuje napisać funkcje reagującą na przejście wartości ADC przez okreslone punkty: X Y 0----->--|----|---<----1023 Reakcja ma następować od większej wartości do Y lub od mniejszej do X . Przedział X-Y to niejako histereza, ale nie wystarczy mi, że wartość znajdzie się w tym przedziale bo czasem potrafi go minąć, bezwładność układu + średnia dokładność....
Witam! jestem początkujący w programowaniu , mam problem z programem . Potrzebuje napisać program który po naciśnięciu przycisku nr1 będzie zmieniał funkcje (dokładnie jak w załączonym kodzie) program działa ale jeden przycisk zmienia 5 funkcji po kolei i zaczyna znów od pierwszej , Potrzebuje teraz żeby nacisniecię drugiego przycisku powodowało cofanie...
Witam, chciałbym aby w kodzie konwersja realizowana była w sposób ciągły oraz odczyt wyniku przetwarzania realizowany był w przerwaniu od przetwornika. Jak można zmodyfikować kod aby spełniał podane funkcjonalności ? [syntax=c] #include <Arduino.h> #define ADC_RESOLUTION_DEFAULT (5.0f / 1024.0f) uint16_t digital; float voltage; uint16_t ADCsingleREAD(uint8_t...
Panowie pytanie trochę z innej beczki aczkolwiek z Arduino związane. Potrzebuję schemat blokowy do mojego programu, lecz nie do końca wiem w jakie bloki mam wstawiać podane niżej polecenia. Czy tak jak napisałem jest poprawnie ? 1. Garaz.updateInterval(3,0); --->B 2. digitalWrite(Dioda,LOW); --->B 3. Licznik=0; --->C 4. Serial.println(); --->B 5. Licznik++;...
Cześć, jestem początkującym w arduino. Robię prostego robota na arduino. Chciałem się zapytać jaką funkcję mam użyć. Jako że to ma być w miare prosty program chciałem w właściwym programie odwoływać sie do mniejszych {sorki nie wiem jak to opisać}. Np. mam sterownik l293 i wpisując w program "przód" odwołuje się do linijki w której jest napisane np....
arduino funkcja arduino tworzyć funkcja funkcja delay arduino
aktywny subwoofer radio regulator napięcia paneli słonecznych obliczyć arctg
Samsung lodówka – wyłączanie czujnika temperatury zamrażalnika przy otwieraniu drzwi, modele Bespoke/FamilyHub Volvo V70 – losowo działa kluczyk, pilot RF, CEM, synchronizacja, naprawa