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...
Napięcie 8V na pinie A3 poprzez dzielnik napięcia wyniesie około 3,3V i to powinno wystarczyć. W przeciwnym przypadku zmienić wartość: [syntax=arduino] rigstate Radio::read_power_state() { return read_analog_port(power_input) > 600 ? ON : OFF; } [/syntax]
Nie widzę żadnego zainteresowania moją propozycją, więc podpowiadam. [syntax=arduino]uint32_t ReadKeyboard() { uint32_t data = 0; StartSpi(); SPI.transfer(0x42); // CMD_MODE_READ delayMicroseconds(1); for(uint8_t i = 0; i < 3; i++) { data <<= 8; data |= SPI.transfer(0); } EndSpi(); return data; }[/syntax]
Nie mam pod ręką Arduino, żeby spróbować, więc przerobiłem program tak, by móc przetestować jego działanie pod Linux-em bez Arduino - i działa. Przy zdefiniowanym symbolu ARDUINO kompilują się te elementy, które są dla Arduino; bez niego te, które są do Linux-a. [syntax=c]#ifdef ARDUINO #include <TM1637Display.h> #define ZEGAR A5 #define DANE...
W monitorze portu Arduino wyskakuje błąd: "display initialization failed!" [syntax=arduino]bool KS0108_GLCD::begin(bool cs_active) { // allocate some RAM space for the display buffer, returns false if failed if ( (buffer = (uint8_t *)malloc((WIDTH * HEIGHT) / 8)) == NULL ) return false;[/syntax]
Krótsza wersja: [syntax=c] unsigned int b; for(int i=0; i<(sizeof(a)/sizeof(*a)); i++){ b = b<<1 | a[i]; }[/syntax] I cały program z przykładem użycia: [syntax=c]#include <stdio.h> #include <stdlib.h> int a[32]= {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}; int main(){ unsigned...
Mam taką funkcję: [syntax=arduino]String jsonmake() { String jsonout; StaticJsonDocument<512> doc; doc["BatteryID"] = WiFi.macAddress(); doc["Time"] = getUnixTimestamp(); doc["Temperatura1"] = bms_alarms.temperature1; doc["Temperatura2"] = bms_alarms.temperature2; for (int i = 0; i < (sizeof(voltages) / sizeof(voltages[0])); i++) { j = i+1;...
W kodzie masz już "oversampling", robi to funkcja: [syntax=c]int averageAnalogRead(int pinToRead) { byte numberOfReadings = 8; unsigned int runningValue = 0; for (int x = 0 ; x < numberOfReadings ; x++) runningValue += analogRead(pinToRead); runningValue /= numberOfReadings; return (runningValue); }[/syntax] Jak chcesz więcej próbek to możesz zamienić...
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,...
Tak, na szybko: [syntax=c] #include <Wire.h> #define DEVICE_1 B0100000 #define DEVICE_2 B0100001 #define DEVICE_3 B0100010 void setup() { Serial.begin(9600); Wire.begin(); } void loop() { printIOexpander(DEVICE_1); printIOexpander(DEVICE_2); printIOexpander(DEVICE_3); Serial.println(); delay(500); } void printIOexpander(int address) { Serial.print(address,...
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...
Tak jeżeli twój terminal obsługuje znaki sterujące. Kompletne polecenie wysłania wiadomości SMS wygląda następująco: AT+CMGS="+48XXXXXXXXX" <CR> Tekst wiadomości <CTRL+Z> <CR> - „Carriage Return” w tablicy ASCII ma numer 13 (0x0D). W terminalu ten kod będzie wysyłany po naciśnięciu klawisza [Enter]. <CTRL+Z> - "Substitute"...
Chodziło mi o wykorzystanie tej funkcji tylko do znalezienia znaków ? i & . Przeanalizuj gotowca: [syntax=c]char strStartsWith(const char* s, const char* startsWith) { for (;;) { if (*startsWith == '\0') return 1; if (*s != *startsWith) return 0; ++s; ++startsWith; } } char getChrVal(const char* const s, const char* const key, char& variable) { if...
Trzeba dodać lokalną funkcję pomocniczą procfun (): processor () ma pozostać nie-statyczna.
Praktycznie rzecz ujmując używasz zewnętrznego rtc, albo właśnie milis / micros (bo w avr też byś mierzył ilość przejść timera - i wyjdzie na to samo), najlepiej wziąć jakiś wzorzec czasu np gps albo krajową częstotliwość wzorcową, ew sygnału akustycznego. Co do micros https://ucexperiment.wordpress.com/2012/...
Sprawa okazała się bardziej skomplikowana niż przypuszczałem. Jeżeli dość intensywnie używamy w programie funkcji ObjTXT.setText("text"); to sprawa się mocno komplikuje. ale po kolei. Po uruchomieniu arduino mamy coś takiego: 936443 w okienku MCU return widać że arduino wysyła bkcmd=1 a według dokumentacji powinno być 2. 936442 W setup można zmusić...
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...
W funkcji imieniny () nie sprawdzasz poprawności argumentów wejściowych miesiac oraz dzień np. kiedy zotanie podany 30 luty. W takiej sytuacji plik zostanie otwarty i odczytany z karty, a funkcja imieniny () zwróci losowy ciąg znaków, a plik "imieniny.txt" na karcie nie zostanie zamknięty . Kompilator generuje ostrzeżenie:[syntax=bash]../Arduino/sket...
Wejście jest na pin 1 a wyjście na 7? To drugi na we 2 i wy 8 :) bool en_47162885_1; int in_47162885_1; byte K_47162885_1; int out_47162885_1; long Dacc_47162885_1; bool _gen1I = 0; bool _gen1O = 0; unsigned long _gen1P = 0UL; bool en_47162885_2; int in_47162885_2; byte K_47162885_2; int out_47162885_2; long Dacc_47162885_2; bool _gen2I = 0; bool _gen2O...
Niestety, nie znam Arduino, ale jeśli jest to coś (lub podobnego), to masz dostępne wszystkie opcje: You can also change the enter key emulation to carriage return, line feed, both, or neither. Ustawienie to determinuje, jakie znaki są dołączane do wysyłanego tekstu po wciśnięciu klawisza Enter (lub naciśnięciu Send): No line ending - nic nie jest dołączane....
Tylko czy to jest "zgodne ze sztuką"? Samo Arduino nie jest zgodne ze sztuką, więc tym się nie przejmuj. Z czasem, jeśli będziesz kontynuował naukę programowania, będziesz pisał coraz lepiej. Zastanawiam się czy się tu nie pogubię? Pogubisz się i to nie raz. C++ i Arduino mają w sobie tyle tajemnic, że na 10 lat zaskoczeń wystarczy. Funkcje w C i C++...
float getWetherTemperature(std::st... json) { std::string temperature; int positionbeg; int positionend; positionbeg = json.find("\"temp\"&q... if(positionbeg == std::string::npos) return -100; // pozycja nie znaleziona // szukam delimitera kolejnych elementów w json, //...
Mam pewne urządzenie na ESP32, które się samo resetuje co losową ilość dni (1..10 dni). Znam ostatni powód resetu z tej funkcji: [syntax=arduino]RESET_REASON rtc_get_reset_reason(int cpu_no); [/syntax] i jest to ten enum: [syntax=arduino]case SW_CPU_RESET : return F("Software reset CPU"); [/syntax] Niestety, nic konkretnego mi to nie mówi. Nie mogę...
Biblioteka obecna to https://github.com/ESP32Async/ESPAsyncWe... taki sam błąd jak wyżej. zainstalowałem kolejne https://obrazki.elektroda.pl/1534432800_... teraz jest taki błąd [syntax=arduino] In file included from F:\radio_2\ESP32_radio_evo3.17.77\ESP32_... c:\Users\nouki\Documents\Arduino\librari...
Trzeba kota zamknąć, bo najwyraźniej biega Ci po klawiaturze. Na obrazku widać rozpoczętą definicję funkcji i nagle zaczyna się kolejna, ja w ogóle ściągnąłem to co tu pokazałeś w temacie i nie mam funkcji 'sendState()", może Mruczek Ci to wkleił z innego szkicu. Ja tak to widzę: [syntax=c]// ----------------------------------------...
Niemal zawsze gdy zwraca Ci 1 lub 0, jest to wartość true/false z funkcji. Czyli jednym słowem funkcja powiadamia czy jej wykonanie powiodło się, czy coś jest nie tak. Najwyraźniej zamiast stringa/tablicy z HTML, pobierasz ten tzw return funkcji. Po prostu źle obsługujesz dane i dostajesz nie to co chciałeś. Poczytaj jak sie odczytuje z SD jako string,...
buffer<<=18; można też rozumieć jako przesunięcie o 18 bitów :D bo docelowe dane nie znajduja się na początku ramik Tylko czy aby we właściwym kierunku? Funkcja TC_GetTC1() nie wykonuje konwersji tylko rzutowanie i moim zdaniem jest zbędna. Spróbuj tak buf w funkcji RD_AD() bo zmienne lokalne nie są domyślnie zerowane podczas deklaracji i mogą...
Żyje temat 😊 bo tak zależy jak mam czas to coś się bawię. Skoro w tamtym temacie już działasz w Arduino, to tak się szczęśliwie składa że możesz użyć lepszej, dokładniejszej metody niż to proste liczenie w ciągu pięciu sekund. A jeszcze tak się składa że, używając tego przykładu z kursu, tak właściwie masz już co trzeba. Chodzi o to że po każdym...
1. Funkcję konwersji do hex-a możnaby zrobić w oparciu o LUTa (stablicowane wartości). Poniżej prosty przykład na PC-ta dla testów ale łatwo zaadoptować do arduino: [syntax=cpp]#include <iostream> using namespace std; void tohex(unsigned long val, char* buf) { const char* const lut16 = "0123456789ABCDEF"; // tablicę można przenieś do FLASH for...
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...
Zmieniłem na Doit ESP32 Devkit v1 Compilation error: 'struct PubSubClient' has no member named 'setKeepAlive' i podświetliło mi się to w pliku mqtt.cpp mqtt_client = new PubSubClient(*client); mqtt_client->setKeepAlive(MQTT_KE... if (mqtt_client == NULL) { DEBUG_LOGF("MQTT Init: Failed to initialise...
https://obrazki.elektroda.pl/2191398900_... Dzięki Arduino możemy rozbudować niemalże dowolną centralkę alarmową o funkcję wysyłania powiadomienia poprzez e-mail. Doskonale uzupełnia to starsze systemy alarmowe, które najczęściej nie są już podłączone do usługi monitorowania. Istnieją komercyjnie dostępne produkty tego rodzaju, ale...
Jakież to Arduino? Widać, że AVR ale jaki? Konstrukcja [syntax=c] if (timeNow - lastTime < 600) return; if (timeNow - lastTime < 6000) { dane=dane<<1; dane++; } if ((timeNow - lastTime > 6500) && (timeNow - lastTime < 10000)) { dane=dane<<1; } [/syntax] Trochę bez sensu, bo jak coś jest niższe niż ileś tam nie może być...
Lib z założenia musi blokować przerwania. A raczej sam driver tj. procedura transmitująca dane do LEDów. Jednakże przypuszczam, że poza funkcją drivera przerwania są odblokowywane, więc to nie problem. Problemem leży w tym, że funkcje efektów są napisane w ten sposób, że nie można ich przerwać w połowie. Trzeba by je napisać od nowa. Na przykład raibowCycle...
W tym co dałeś te przypisanie do zmiennej jest niepotrzebne :!: starczy samo < cośtam > return 0; < cośtam > return 5; < cośtam > return round(costam); itp. itd. czyli bez znaku =
Mógłbyś mi wkleić kawałek kodu jak to wysłać po RS232 ? Arduino np Pozdrawiam Coś w stylu:[syntax=c]void setup(void) { Serial.begin(9600,SERIAL_8N1); } uint32_t otime=0; float value=0; void loop(void) { char buf[24]; uint32_t nt = millis(); if (nt-otime < 500) return; otime = nt; if (Serial.available()) { sprintf(buf, "%20.6f", value += 0.01); Serial.println(buf);...
masz w tym pliku /** * Read the available payload * * The size of data read is the fixed payload size, see getPayloadSize() * * (at)note I specifically chose 'void*' as a data type to make it easier * for beginners to use. No casting needed. * * (at)note No longer boolean. Use available to determine if packets are * available. Interrupt flags are now...
Z tego co widze to key jest zakończony spacją nie tak jak myślałem \r\n. Pokaż co wychodzi z tego. [syntax=cpp]void KbdRptParser::OnKeyPressed(uint8_t key) { Serial.print((char)key); Serial.println(keyString); if(key==' '){ if(0==strcmp(keyString,"5901336909607"))... Serial.println("ok."); } keyString[0]=0; return; } keyString[strlen(keyString)]=key;...
Jeżeli korzystasz z bibiotek masz kod wynikowy bez źródła. Jedynie możesz disamblować i podejrzeć daną funkcję w asemblerze. Kolego nie przesadzaj!! Wszystkie źródła mbed masz na mbed.org Ta funkcja mapuje dany pin na konkertne peryferium. Jezeli nie może przemapować takiego pinu to masz błąd. Jest to generalnie na mbed zrobione tak prosto, prawie...
(at)fifcio13-13 dopóki się nie nauczysz C i nie poznasz podstaw to Twoją jedyną szansą jest Arduino. Jak byś spojrzał do kodu źródłowego to byś nie pisał że zwraca 3 tylko FR_NOT_READY co makieś znaczenie dla człowieka bo wie o co chodzi /* (3) The physical drive cannot work */ Jak byś spojrzał do funkcji f_mount to byś zobaczył że nie może ona zwrócić...
Witaj, nie wiem jakiej biblioteki używasz ale jeśli to jest ta http://tomczak.org.pl/index.php/dydaktyk... to masz coś takiego jak, sprawdzanie sumy kontrolnej [syntax=c] if ( OneWire::crc8( addr, 7) != addr[7]) { Serial.print("CRC is not valid!\n"); return; } [/syntax] Wtedy będziesz wiedział czy te 0 to błąd...
Albo nie doczytałeś, albo (jak zwykle(!)) - nie zrozumiałes całości fragmentu... Przeciez pisałem w twoim języku, ze nie chodzi o sam odczyt, lecz o funkcję millis(). Raczej Ty nie doczytałes w funkcji milis nie za bardzo jest co przerwać a wyglada ona tak: [syntax=c]unsigned long millis() { unsigned long m; uint8_t oldSREG = SREG; // disable interrupts...
Z tego co przeczytałem to "return" w przerwaniu nie może zwracać żadnej wartości, więc jak rozwiązać ten problem ? Użyj zmiennej globalnej z atrybutem volatile.
lcd.print(getFreeMemory()); Wynik to 6818 Nie rozumiem, o co chodzi z tym "int size = 8192" znalazłem coś takiego, myślałem, że trzeba zmienić w funkcji availableMemory :) : // this function will return the number of bytes currently free in RAM // written by David A. Mellis // based on code by Rob Faludi http://www.faludi.com int availableMemory()...
Pewnie jest istotne, jaki jest 'channel' - włączasz dodatkowe nuty tylko dla channel=1, a wyłączasz niezależnie od kanału - jak po wyłączeniu powtarzania puścisz klawisz w innym kanale, to skasujesz informację, że coś miało być wyłączane. Poza tym, w 'C' tablice indeksuje się od 0, więc w MyHandleNoteOn najpierw wpisuj do tablicy, potem zwiększaj indeks,...
Cześć, Po pierwsze, dziękuję za Twoją pracę. Bazując na wszystkich przydatnych informacjach, które znalazłem w tym temacie https://www.elektroda.com/rtvforum/topic... + dokumentacja github, zrobiłem skrypty adaptujące urządzenie Etersky WF-CS01. Nie mam dobrych zdjęć, ale jest to to samo urządzenie, o którym mowa tutaj: https://www.elektroda.com/rtvforum/topic...
Co "toto" jest? ISR_NO_BLOCK(TIMER0_COMP_vect) Wyszukiwarka nie działa? Czemu kolega strzela na ślepo? Ja rozumie "dawno, dawno temu, za siedmioma górami, za siedmioma lasami, gdy nie było Internetu..." Ale teraz? https://www.nongnu.org/avr-libc/user-man... Tak ciężko znaleźć? Przy okazji. Chce kolega koniecznie dziedziczyc...
Zakłucenia na przewodach ? sprawdzasz CRC przy odczycie ? Nic nie bylo zmieniane/dotykane w okolicach sterownika/okablowania ... CRC nie sprawdzałem, dołoze to dzisiaj do kodu, jednakże jesli coś chodziło poprawnie przez kilka miesięcy, a nagle przestało, to chciałbym wiedziec co sie mogło podziać Na razie z moich analiz i przemysleń wynika ze może...
Witam! Zrobiłem prosty projekt wysokościomierza ciśnieniowego. Wszystko działa w jak najlepszym porządku. Teraz muszę go przekonwertować aby działał na mniejszej płytce zasilanej z baterii. Z tego powodu postanowiłem użyć funkcji sleep i przerwań. Program ma działać tak: - w funkcji setup następuje inicjalizacja karty i czujnika, jeśli wszystko działa,...
https://obrazki.elektroda.pl/2408248100_... https://obrazki.elektroda.pl/4414580400_... [syntax=c][/syntax]
Użyj WiFi.status() po WiFi.begin(). Sprawdzaj przez taki czas, jaki sobie życzysz - jak nie ma połączenia, to usypiaj. W tej chwili, w pętli loop() "drenujesz" baterie poprzez ciągłe wywoływanie WiFi.begin(), bez sprawdzania statusu połączenia. https://arduino-esp8266.readthedocs.io/e... https://arduino-esp8266.readthedocs.io/e...
Piszesz jakbyś nie wiedział , albo szukasz zaczepki... Kolega w dalszym nie wyjaśnił, dlaczego kolegi zdaniem opis (zgadzam się, że nieco uproszczony) przedstawiony przez (at)Piottr242 jest: Co w przypadku Arduino nie jest prawdziwa kolejnośc (!) Otóż jest to poprawna kolejność, z punktu widzenia kodu, który widzi użytkownik i wynika to z funkcji main()...
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"...
Uważam że nie potrzebnie zmieniłeś kodowanie na dziesiętne. Każdy bajt składa się z części stałej (coś jak adres funkcji) i zmiennej (dane) dla sopranów część stała to 7 (0111) lub żeby było wygodniej 112 (7 << 4 czyt 7 przesunięte w prawo o 4 bity) dla basów część stała to 6 (0110) lub 96 (czyli 6 << 4 ) dalej na pozycji C3 masz znak plus...
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...
(...) return true; } } return false; } void displayOxygenPercentage(float percentage) { // Czyszczenie ekranu i ustawienie kursora lcd.clear(); lcd.setCursor(0, 0); // Wyświetlanie informacji o stężeniu tlenu lcd.print("Tlen: "); lcd.print(percentage); lcd.print("%"); } Wygląda na to, że jest kilka potencjalnych problemów w twoim kodzie, których można...
Cześć. Potrzebuję w swoim programie pisanym w C (Arduino) zaimplementować wyliczanie Checksumy według poniższych wytycznych. https://obrazki.elektroda.pl/7896861500_... Stworzyłem taką funkcję, która będzie obliczała Checksumę z danych umieszczonych w tablicy. Parametrem "lenght" określam wielkość tablicy. [syntax=c]uint8_t calcChecksum(uint8_t...
Działa, dzięki ogromne! Debouncing zrobię, celowo go nie dodawałem na tym etapie, bo nie wiedziałem, czy będzie potrzebny, a nie chciałem komplikować kodu. Faktycznie czasem zlicza kilkukrotnie, delay(20) powinno załatwić sprawę. Pytanie: dlaczego pierwsza linijka jest niepoprawna? Czy w funkcji nie trzeba podać argumentu? Jeżeli stykx zastąpię styk,...
Na przerwaniach zewnętrznych będzie enkoder i to wiem jak wykonać, a jak zrobić Jeżeli użyjesz funkcji millis() w pętli loop(), to pamiętaj że funkcja ta blokuje na chwilę przerwania w trakcie swojego działania. Zbyt duża częstotliwość jej użycia w pętli loop() może spowodować zakłócenia w odczycie enkodera. [syntax=c] unsigned long millis() { unsigned...
https://obrazki.elektroda.pl/7583117900_... Pokażę tutaj moją prostą implementację tzw. "WiFiManger" na Arduino R4, czyli mechanizmu, który pozwala parować Arduino z naszą siecią WiFi w stylu parowania Tasmoty, czyli najpierw Arduino jest w trybie otwartego access pointa, do którego można się podłączyć i wpisać dane naszej sieci WiFi,...
A mógłby kolega poprawić ten kod? Ewidentnie porywasz się z motyką na słońce. Zaczynasz programować, ale jednak chcesz zacząć od bardzo skomplikowanego programu, z błędami które nie wiesz jak rozwiązać... Tak jak większość radziłbym zaczynać od małych rzeczy, nie mówię, że masz przez tydzień pisać program do migającej diody, ale polecam jakieś mniej...
Nie, wcześniej pominąłem elementy łączenia z Bluetooth. Poniżej wklejam całe Activity. Docelowo chcę pobrać wartość temperatury i wyświetlić ją jako "temperaturaaktualna". [syntax=java]package com.dawid.smarthome; import androidx.appcompat.app.AppCompatActivity... import android.app.ProgressDialog; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice;...
Ale ja już sprawdziłem odbiornik na samym Arduino. Napisałem prosty program, który zapalał diode… …. Zaprogramowałem też płytkę tak, aby można było zapalać i gasić diodę dowolnym przyciskiem pilota, bez odczytywania kodu, Występuje natomiast problem ze sczytaniem kodów. Wgrywałem do Arduino wszystkie ogólnodostępne programy do obsługi pilotem...
Oto coś, nad czym GPT i ja pracowaliśmy, aby stworzyć symulator BL0937 do testowania OpenBeken na różnych platformach. Jest to szkic Arduino, który działa na ESP-WROOM-32 i jest obecnie podłączony do RTL8720DN/BW16E NiceMCU_RTL8720_V1 z uruchomionym OpenRTL. Szkic wykorzystuje PWM do symulacji CF, CF1 i SEL, umożliwiając OpenBeken interpretację sygnałów...
Czy po wciśnięciu przycisku program ma wykonywać w kółko wybraną sekwencję? Pewne tak, a wtedy: jak w trakcie wykonywania sekwencji program ma reagować na wciśnięcie przycisku? Ma dokończyć wykonywaną sekwencję, czy ją przerwać? Jeśli program ma rozpoznawać wciśnięcie przycisku w czasie wykonywania sekwencji, to zamiast _delay_ms() trzeba wstawić własną...
Zmień pętlę główną na: Dodano po 6 Jeszcze kilka drobnych poprawek. Tak powinno już działać: [syntax=c]void setup() { pinMode(8, OUTPUT); //pompka jako wyjście pinMode(7, INPUT_PULLUP);//Czujnik pomiaru jako włacznik digitalWrite(8, LOW); //Wyłączenie pompki } #define MAX_CZAS_DEBOUNCINGU (20UL) int odczytCzujnika() { static int dlugoterminowyStanCzujnika...
Możesz sprawdzić czy coś takiego zadziała, wszystkie użyte funkcje powinny być zgodne, temperatura jest w centach czyli x100. [syntax=c]//Piny One Wire uint8_t OneWirePin=A0; #define MATCH_ROM 0x55 #define SKIP_ROM 0xCC #define SEARCH_ROM 0xF0 #define CONVERT_T 0x44 // DS1820 commands #define READ 0xBE #define SEARCH_FIRST 0xFF // start new search #define...
komunikacja z przetwornicą jak w poprzednich postach zapytanie : QEY<YYYYnnn><cr> (query year, checksum, carriage return) <YYYY> Y zmienna typu int is an Integer, checksum for QEYYYYY, odpowiedz 8 cyfr wartość w kilowatach pytanie:QEY2011179<cr> odpowiedz: (03012300<cr> miesiąc, dzień podobnie Pozdrawiam
jest jeszcze I2C. Statusy tej magistrali też nie są sprawdzane. Jakiego rodzaju "statusy" na magistrali I2C powinny być sprawdzane? Nie pisz, że nie wiesz. Informacja o NACK dla adresu czy danej przy zapisie to chyba podstawa. Biblioteka udostępnia stosowną zmienną. Nie problem sprawdzić czy nie ma błędu, chyba, że odczyt nieprawdziwych wartości, w...
Proszę "gotowy" przykład odbioru kodu z pilota w Bascom, bez korekcji oscylatora, czyli wersja absolutnie podstawowa. 128 Pulsein S1 , Pinb , 0 , 0 If S1 > 60 And S1 < 90 Then Bud = Bud + "1" If S1 > 15 And S1 < 40 Then Bud = Bud + "0" Next I Print Bud Bud = "" 'If Bud = " 110000001111111100111111 " Then print "1-ON" Return[/syntax] W Arduino...
Witam Od kilku dni morduje się z jednym problemem. W wolnych chwilach kombinuję z kodem do stacji pogodowej. Wszystko szło pomalutku do przodu. Program normalnie się kompilował i wgrywał bez chwili zawahania, aż pewnego razu z niewiadomych dla mnie przyczyn odmówił posłuszeństwa. Nie mam pojęcia co się stało. Nagle przestał widzieć dołączone zakładki...
Rzeczywiście, ta metoda nadaje się znacznie więcej niż dla Wemos D1, nie chciałem nic takiego sugerować, po prostu na Wemos D1 będzie kilka tematów stąd taki tytuł. Tutaj jest nieco więcej szczegółów: https://github.com/JAndrassy/ArduinoOTA ArduinoOTA wspiera: - classic ATmega AVR with at least 64 kB of flash (Arduino Mega, MegaCore MCUs, MightyCore...
Jeżeli to Arduino to millis, jak nie to musisz sobie je sam napisać [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> volatile unsigned long millis_counter = 0; ISR(TIMER0_OVF_vect) { millis_counter++; } void millis_init() { TCCR0A = 0x00; TCCR0B |= (1 << CS01) | (1 << CS00); TIMSK0 |= (1 << TOIE0); TCNT0 = 0; sei();...
Miałem też ten problem :) poniżej kod konwersji [syntax=c] uint16_t decode(uint16_t input) { uint16_t bitr, bitb, bitg; bitr = (input & 0xF800) >> 11; bitb = (input & 0x1F); bitg = (input & 0x7E0) >> 5; return ((bitb<<11) | (bitg<<5) | bitr); } [/syntax]
znalazlem.poczytalem.niestety jestem zbyt poczatkujacy w programowaniu wiec niewiele mi to mowi [syntax=cpp] long IRrecv::decodeRC6(decode_results *results) { if (results->rawlen < MIN_RC6_SAMPLES) { return ERR; } int offset = 1; // Skip first space // Initial mark if (!MATCH_MARK(results->rawbuf[offset], RC6_HDR_MARK)) { return ERR; } offset++;...
Witam. Mam ten moduł przekaźnikowy: https://botland.com.pl/przekazniki-przek... po podłączeniu go do Arduino Nano i napisaniu kodu: https://filmy.elektroda.pl/10_1664017701...
Kod na ESP [syntax=c]#include <Wire.h> #include <LiquidCrystal_I2C.h> const int hallSensorPin = 4; // GPIO4 (D2 na ESP8266) const unsigned long sampleTime = 1000; const int maxRPM = 1260; int rpmMaximum = 0; LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.begin(); pinMode(hallSensorPin, INPUT_PULLUP); Serial.begin(115200); lcd.backlight();...
wynik przy kompilacji bez żadnych modyfikacji dla TestLCD: In file included from LCDtest.ino:1: C:\Users\Dell\Documents\Arduino\libr... error: conflicting return type specified for 'virtual void LiquidCrystal::write(uint8_t... C:\Program Files\Arduino106\hardware\arduino\cores\...
Są przynajmniej 2 szkoły. Ja zaczynam blok klamrą w nowej linii wszystko dalej odsuwam o tabulator i kończę klamrą na wysokości zaczynającej klamry. [syntax=c] int funckja() { if (true) { return 1; } } [/syntax] tyle że coś w tym edytorze elektrodowym tab z klawiatury nie wchodzi. W powyższym przykładzie spacje. Druga szkoła to klamra na końcu definicji...
Ja obsługę POST rozwiązałem tak: [syntax=c] #include <Arduino.h> #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> const char* ssid = "ssid"; const char* password = "password"; int out1 = 4; int out2 = 5; String out_state1 = "OFF"; String out_state2 = "OFF"; String login = "admin"; String pass = "admin";...
Zacząłem testować ten kod i właściwie działa choć widzę, że zmienna keyhist przyjmuje wartość 0 lub 1 w zależności od tego czy przełącznik jest załączony czy wyłączony (na pinie mam HIGH lub LOW). W związku z tym warunek if działa tylko przy keyhist = 1. [syntax=c]byte keyhist = (keyhist << 1 | klawisz_zwolniony()) & B111; klawisz_zwolniony()...
Witam. Podłączę się do zamkniętego tematu: https://www.elektroda.pl/rtvforum/topic3... Jestem w takiej samej sytuacji jak brinktomasz22. 1. Początkujący ... albo bardziej ... 2. Zgrzewarka z projekt: https://majsterkowo.pl/zgrzewarka-do-ogn... Również zależy mi na tym, aby przycisk chwilowy zadziałał tylko raz...
Zadziałało ? Jasne, że zadziałało. :) Staram się rozkminić bibliotekę. Jest w niej taka metoda do zapisu pamięci: Dodano po 4 i jeszcze to: [syntax=c] #if ARDUINO >= 100 #include "Arduino.h" #else #include "WProgram.h" #endif [/syntax] co oznacza ARDUINO z warunku [syntax=c] #if ARDUINO >= 100 [/syntax]
Skecz to taka forma sceniczna, zwykle zabawna. Albo używaj na przyszłość Sketch (po angielsku) albo polskiego tłumaczenia szkic. A jeszcze lepiej nazywaj to merytorycznie programem. Nie żebym się czepiał, ale sam widzisz, że wychodzi dosyć... zabawnie ;)
warning: deprecated conversion from string constant to 'char*' Kompilator zgłasza warning przy konwersji typu string do char *. Jeżeli chcesz się go pozbyć to Twoja funkcja powinna zwracać const char* bo takiego typu są literały znakowe w C++ ("No Data"). To coś istotnego z punktu widzenia kodu? I czy mogłbyś mi wyjaśnić czemu ten fragment kodu ma...
Można zmienić podejście do pomiarów czasu i zamiast z bezwględnej wartosci millis korzystać z interwałów. Zwykle i tak na podstawie bieżącej i poprzedniej wartości millis wylicza się jakiś odcinek czasowy. I tu czas na magię: odejmując dwie liczby całkowite bez znaku i zachowując wynik w zmiennej o tej samej wielkości otrzymuje się wynik bez względu...
Cześć. Mam procesor Atmega8L do którego linii RxD i TxD podłączony jest układ transmitera RS485. Linia PD4 procesora steruje kierunkiem transmisji RS485. W Arduino w menadżerze płytek zainstalowałem płytkę "MiniCore", dzięki której można podobno tworzyć program dla Atmega8. Stworzyłem taki kod: https://obrazki.elektroda.pl/6140320500_...
Witajcie. Piszę skrypt przesyłający dane do Arduino, a Arduino ma je zapisać w zewnętrznej pamięci EEPROM (24LC32). Chodzi o przesłanie tablicy zawierającej równo 4KB danych. Dla uproszczenia, na potrzeby testu wszystie dane w tablicy mają wartość 0x13. Problem polega na tym, że podczas odczytu z pamięci EEPROM okazuje się, że skrypt "gubi" gdzieś ostatnie...
(...) ilość milisekund do następnego wydarzenia w kolejce, by opcjonalnie można było na ten czas uśpić mikrokontroler Powinna być możliwość użycia lambda captures jako przekazywanej funkcji callback. Nie używaj funkcji delay(); Możesz skorzystać z posortowanej listy / drzewa binarnego, by w pętli loop sprawdzać jedynie najbliższe wydarzenie (kolejność...
Witam Otóż mam do zrobienia projekt, przy wykorzystaniu Arduino UNO R3, który ma działać, podobnie do czujnika parkowania. Przy określonej odległości ma wydawać dźwięki ostrzegawcze. Mam problemy z podłączeniem tego. Czy mógłbym prosić o pomoc. Z góry dziękuje. Pozdrawiam Karis Dołączam kod po skompilowaniu monitor portu szeregowego pokazuje cały czas...
http://obrazki.elektroda.pl/1526117800_1... Głównym pomysłem tego projektu było stworzenie systemu zdolnego odczytywać tagi RFID pracujące orzy 13,56 MHz, znajdujące się w różnych obiektach, kartach, opaskach na rękę, naklejkach etc poprzez "magiczna skrzynkę", która z kolei wpisywałaby UID każdego zeskanowanego taga RFID w lokalnej...
[syntax=arduino][code] /** * (at)file main.cpp * (at)brief time relay * (at)author by D****** P***** * (at)date 03-2023 */ #include "RTClib.h" #include <Arduino.h> #include <SPI.h> #include <Wire.h> RTC_DS1307 m_rtc; ///< DS1307 RTC const DateTime m_start = DateTime(2000, 1, 1, 16, 48, 0); ///< time when realy turn on const DateTime...
Dzięki, po zmianie na volatile i ustawieniu tego rejestru pięknie działa. Dla potomnych kod: [syntax=c]#include <avr/io.h> #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define PWM_A (1<<PD4) #define PWM_B (1<<PD5) char b; int a = 0; volatile int flaga; #define USART_BAUDRATE 9600 #define...
Nie ma czegoś takiego, jak sterownik I2C w Arduino dla SM2135. To, że akurat w Tasmota A czy ja gdzieś napisałem, że w samym Arduino jest sterownik SM2135? A co do nazewnictwa... oficjalne nazewnictwo Tuya jest I2C/IIC: https://github.com/TuyaInc/tuya_zigbee_s... [syntax=c] /**...
Najpierw się skupmy na "standardowym kodzie arduino". Obawiam się ... sprawdziłem że fatal error: stdatomic.h: No such file or directory No tak. Jak jest wygodnie to skupiamy się na tym co jest w "standardowym kodzie arduino". Nie moja wina, że ma to antyczną bibliotekę standardową. a nawet gdyby był, żaden z programistów arduino nie uzna to za standardowe,...
Witam ! Dziękuję za pomoc. (at)emarcus Man następujący problem: [syntax=arduino] void loop() { programowanie(); } void programowanie() { zw_temp=zw; lcd.setCursor(0, 0); lcd.print("zw"); void loop() { // tu wyskakuje błąd ! lcd.print(zw_temp); if (digitalRead(3) == LOW) { zw_temp++; delay(300); } if (digitalRead(4) == LOW) { zw_temp--; delay(300); }...
W arduino reference jest napisane wprost jaka jest implemetacja - zakres jest proporcjonalnie przeskalowany do innego zakresu: Dodano po 40 https://www.arduino.cc/en/Reference/Map
No i tak powstają testy odpornościowe nieudokumentowanej tolerancji na 5V urządzeń 3.3V. Jednak na początek zasil go z 3.3V, piny I2C są podciągane wtedy przez rezystory z tego napięcia, zwykle Arduino nie ma z tym problemu, sprawdź jeszcze raz skanerem czy wszystko działa. No i poszukaj innej biblioteki. W Adafruit ewentualnie zakomentuj część odpowiedzialną...
To po kolei: EM_A_power to jak widać zmienna float (tu przywołana jako extern), która przyjmuje wynik funkcji IntToFloat. Funkcja umieszczona w szkicu działa od dłuższego czasu, nie działała w wydzielonym pliku; dzięki uwagom kolegi z innego forum okazało się przy okazji, iż w tej formie jest UB, ale o dziwo działała. Tak jak przypuszczałem - "głupi...
Dzień dobry Usiłuję właśnie zrobić (w zasadzie napisać) watomierz na bazie Arduino i przekładnika prądowego. Poczytałem różne przykłady, zdecydowałem się na szybkie sumowanie odczytanych wartości napięcia na przekładniku. Przekładnik (2000x) jest obciążony rezystorem 220 Ohm (z braku 200), co powinno dać interesujący mnie zakres pomiarowy. Kod niby...
return remote return patch carriage return
lodówki amica opinie makro zapisać bateria telefon latarka
kompresor samochodowy kompresor samochodowy
Makita DC18RA: Migające czerwone i zielone światło Jak uruchomić BIOS w tablecie Acer z Windows 8.1?