Który numerek (9, 14 czy 5) mam wpisać w kodzie w digitalRead()? D5 albo 14 :) czyli digitalRead(D5) lub digitalRead(14) Konwersja pinów w ArduCAM UNO jest jak w poniższym listingu. Oznaczenia "Physical PIN" możesz zignorować. [syntax=c] static const uint8_t SDA = 4; static const uint8_t SCL = 5; static const uint8_t SS = 15; static const uint8_t MOSI...
Może masz jakiś lewy DS18B20, spróbuj użyć konwertera poziomów logicznych, zasilasz DS normalnie z 5V, podciąganie ~2k podłączasz po stronie niskiej, ~5k po stronie wysokiej, GND wspólne. No i popatrz na zwykłym UNO/NANO 5V czy odczyty są racjonalne. Kupiłem kiedyś kilka DS, które zachowywały się bardzo dziwnie, odczyty skakały po pół stopnia co 1s,...
digitalWrite(14, HIGH) ustala stan wysoki na A0. 15 to A1, 16 to A2, 17 to A3, 18 to A4, a 19 to A5. Z kodu Arduino HAL: Dodano po 6 Przyjrzałem się jeszcze raz Twoim zdjęciom dokładnie - faktycznie podłączyłeś ledy również na A0-A5. Tak to jest, jak użytkownik nie umieszcza schematu, a ten co ogląda zdjęcia niekoniecznie musi rozróżniać kolory ;) Dodano...
fajnie. nie zawiesza się. zajmie to wieki. Podłączę AHT20. Dodano po 6 nie jestem pewien, czy i2c zostało dodane do XR872. platforms.md potrzebuje kolumny i2c Dodano po 1 Podłączę AHT20 https://obrazki.elektroda.pl/2016117900_... to było przy użyciu padów testowych PB02 i PB03 https://obrazki.elektroda.pl/4701459100_...
Zakomentowałeś atrybut PROGMEM, więc nie ma prawa działać: static const char /*PROGMEM*/ font5x8[] = {
Bezpieczniej i lepiej wg mnie w takich sytuacjach zamiast: [syntax=c] static char *hello = "Witaj Swiecie!"; static char *msg = "PUTCHAR Napis: ";[/syntax] używać: [syntax=c] static const char hello[] = "Witaj Swiecie!"; static const char msg[] = "PUTCHAR Napis: ";[/syntax] 1. I tak nie manipulujesz potem tymi wskaźnikami na string więc po co one są?...
Sądzę, że powinno być tak:[syntax=c] static const char *my_message_str_tab[] = { "E memory allocation error",//MY_MESS_MEM_ALOC_ERROR "W nastepny komunikat", //MY_MESS_COS_TAM_WARN "W kolejny" //MY_MESS_KOMUNIK_AAAA };[/syntax]
Zdaje się, że pominąłeś deklarację typu elementu tablicy jako char, czyli są inty. Więc ten napis chyba tam jest, tylko litery będą oddzielone zerami. Spróbuj dodać tam char, np. static const char test[] = {...} Nie było żadnych ostrzeżeń kompilatora w tej linijce? Druga opcja jest taka, że linker wyrzuca tą tablicę ze względu na brak odwołań, ale wtedy...
A sznowny kolega "czuje różnicę" pomiędzy: local , global, static , const ,volatile itd. :?: void Timer0(void) interrupt 1 { unsigned int licznik; licznik++; if (licznik == 300) // gdy zmienna licznik jest równy 4000 /*......................................... Piotrek
Zrób coś w tym stylu: #include <avr/io.h> #include <util/delay.h> static uint8_t kolo[4]; static const uint8_t maski[4] = {_BV(0), _BV(1), _BV(6), _BV(7)}; static const uint8_t wszystkie_maski = _BV(0) | _BV(1) | _BV(6) | _BV(7); int main(void)...
Zademonstruję Ci: Nowy projekt w Atollic for STM32: Bez modyfikowania skryptu linkera: https://obrazki.elektroda.pl/4714547300_... A teraz Twoje przezroczyste przypisanie: https://obrazki.elektroda.pl/8906289200_... Dopiero po dodaniu do skryptu linkera: https://obrazki.elektroda.pl/4995382700_...
Jest w Arduino IDE ... oryginalnie w IDE nie ma wsparcia dla Atemeg 16/32, trzeba szukać i dograć odpowiednie pliki z zewnątrz. A te, które są w internecie mają błędy. Trzeba poprawiać. W załączniku bootloader taki właśnie. U mnie działa na IDE 1.5.8 Instalacja dodatku: - plik ...\hardware\arduino\avr\boards.txt zastapić nowym z załącznika - utworzyć...
Znalazłem kod obsługi wyś 7-segmentowego, pozmieniałem rejestry pod swój mikro procesor (ATmega32). Tylko mam problem z linia " static const uint8_t __flash DIGITS To standardowy błąd eclipse i pluginu do AVR, nie wpływa ten błąd na kompilację, jedynie na "podkreślanie" składni w Eclipse. Rozwiązanie tego problemu znajdziesz m.in. w tym wątku: https://forum.atnel.pl/topic15543.html#p...
Chodzi o deklarację zmiennej data W tym przypadku wystarczy, że bufor data zadeklarujesz jako static. Masz tu jeszcze kilka błędów. Funkcja receive zwraca char a Ty próbujesz zwrócić char *. Dodatkowo w main próbujesz przypisać to co zwraca receive do tablicy buffer (co sie nie powinno skompilować). Spróbuj tak: [syntax=c] static const unsigned char*...
[syntax=c] DCB PortDCB; COMMTIMEOUTSCommTimeouts; HANDLE hPort; const unsigned short const_bufo=256; //maksymalna iloϾ danych odczytywana jednorazowo z portu const unsigned short const_bufn=1024; //wielkoϾ bufora nadawczego const unsigned short const_stos=65535; //wielkoϾ Stosu odbiorczego (maks 65535) const unsigned...
const int liczba=10; może niestety wiązać się z rezerwacją miejsca w pamięci. Przykład dondu był zbyt trywialny i dlatego wyszło, że oba sposoby prowadzą do tego samego. Pomiędzy define a const zmienna są istotne różnice. Np. można pobrać adres zmiennej, lecz nie etykiety. Aby oba sposoby były w miarę równoważne lepiej stosować static const zmienna....
Autorze, jeśli ma być prosto i szybko, to tu masz gotowe rozwiązanie działające na dowolnym Arduino: https://wokwi.com/projects/3913510656298... https://obrazki.elektroda.pl/6206152200_... [syntax=c]const byte LED_PINS[] = {2,3,4,5,6,7,8,9}; // piny Arduino, do których podłączone są LEDy const byte BUTTON_PIN = 13; // pin Arduino,...
Masz jeden błąd - Next_step nigdy nie przyjmie wartości 0, co najwyżej 1. Jeśli chodzi o C, to sugerowałbym użycie tablicy: enum { NUM_STEPS = 16 }; enum { STEP_MASK = 0x3f }; /* * Układ portu B: x x I12 I02 I11 I01 Ph2 Ph1 */ static const uint8_t steps[NUM_STEPS] = { /* dla avr-gcc można użyć literałów binarnych:...
Jutro dojadą zamówione moduły konwerterów RS485 na MAX3485; https://obrazki.elektroda.pl/2754812400_... Widok testowego softu; https://obrazki.elektroda.pl/5463453600_... Tymczasowo dioda R (RGB na płycie); podłączona jako pin zmieniający kierunek transmisji dla MAXa; https://obrazki.elektroda.pl/6780784900_...
Potrzebuję w projekcie użyć dynamicznej alokacji pamięci, niestety malloc() zawsze zwraca mi NULL. 1. Proponuję nie używać malloc w projektach embedded. 2. Najprawdoposobniej sbrk jest tylko "kadłubkowa" dla zapernienia linkowania się kodu. Co zrobić: 1. Jeżeli się już uparłeś na "malloc" to proponował bym freeRTOS-a z jego implementacją heap4.c albo...
Już chyba wiem co i jak... ;) Spróbuj takiej modyfikacji (do mojego pierwszego programu): --- klaw.c2009-01-08 21:24:31.000000000 +0000 +++ klaw.c.new22009-01-08 22:52:53.000000000 +0000 (at)(at) -1,5 +1,8 (at)(at) +#define F_CPU 4000000UL /* czy jaką tam miałeś F_CPU */ + #include <avr/io.h> #include <avr/pgmspace.h> +#include...
W ten sposób tylko skonfigurowałeś pin jako wejście z podciąganiem, a stan został 0, bo po resecie rejestr GPIOB->ODR jest domyślnie = 0. Żeby wymuszać stany można zdefiniować sobie proste funkcje: [syntax=c] static inline void gpio_pin_LO(GPIO_TypeDef * const port, T_GPIO_PIN pin) { port->BRR = pin; } static inline void gpio_pin_HI(GPIO_TypeDef * const...
DDRB, PORTB i inne są rejestrami, ale co znaczące można uzyskać ich adres. Utwórz sobie strukturę, w której będziesz przechowywał wskaźniki na rejestry oraz jakąś maskę bitu nad którym chcesz operować. [syntax=C]#include <avr/io.h> #include <macro.h> #include <stdint.h> struct ow_pin { volatile uint8_t* pin; volatile uint8_t* port;...
Sterownik Adafruit_SH1106G wydaje się być OK. Należy go użyć do obsługi wyświetlacza. Ten kod może działać poprawnie: Dodano po 5 Przy okazji: podziałka decybeli ma wartości w nieodpowiedniej kolejności na skali.
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...
Fajnie, że Ci program działa. Kilka sugesti: 1) nazwij jakoś te flagi. Możesz uzyć np: struct { unsigned mute:1; unsigned inna:1; } flags; /* dalej w kodzie */ flags.mute = 1; 2) używasz "magicznych stałych" w stylu 0xFD, 0x18, 63 itd. Wszystkie powinny być opisane i zdeklarowane na początku pliku za pomocą static const ... albo #define...
W odróżnieniu od asemblera kompilator dobrze sobie poradzi z takimi obliczeniami. Wyoptymalizuje jak należy. W to nie wątpię (poradzi sobie z optymalizacją). Natomiast jeśli chodzi o asemblera to programista musi o wszystko zadbać. Jednak nie ulega wątpliwości, iż zarówno zapis, jak i odczyt jest dziwaczny. A najgorsze jest to, że wszelkie obliczenia...
Spróbuj tego kodu: [syntax=c]#include "U8glib.h" #include <SPI.h> #include <Wire.h> #include "max6675.h" U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // I2C int currentTemp = 0; String thisTemp = ""; int maxTemp = 0; // maximum temperature reached int minTemp = 0; // minimum temperature reached int pad = 0; int thermoDO = 8; int thermoCS...
Chciałbym zwrócić uwagę na odczyt wyniku konwersji: [syntax=c] ... uint16_t ConversionResults[ADC_CHANNELS]; // zmienna 16bitowa ... ADMUX = 0x60; // AVCC with external capacitor at AREF pin, left adjust result; // left adjusted, czyli przesunięty o 6 bitów w lewo !!! ... static const uint8_tChannelMUX[ADC_CHANNELS] = {0x61, 0x62, 0x63}; // włączony...
https://obrazki.elektroda.pl/3221612800_... Witajcie moi drodzy. Zapraszam na relację z postępów prac nad otwartym firmware dla BK7231T. Temat ten napisany będzie w formie tutoriala, przedstawię tu krok po kroku jak opracowałem własny, wieloplatformowy (działający na Windowsie i BK7231T) mini-serwer HTTP, system konfiguracji pinów...
Faktycznie, masz rację. Przepraszam, źle pamiętałem logikę, której po włączeniu prądu wystarczy raz "powiedzieć", kiedy roleta zjechała do dołu (endstop). Modyfikując lekko jeden warunek można doprowadzić do tego, aby osiągnąć to, czego potrzebujesz. Oto kod: [syntax=c]/* Author: gps79 * Date: 2024.01.13 */ const int encoderInputAPin = 2; // don't change...
opcje są dwie: 1) wpisanie adresów bezpośrednio w kod w ten sposób: filename1;email addres (at) 1 filename2;email addres (at) 2 filename3;email addres (at) 3 filename4;email addres (at) 4 wtedy trzeba będzie dodać coś takiego [syntax=csharp] public Dictionary<string, string> _addressList; public Dictionary<string, string> AddressList { get...
(...) .db "Jakis napis",0x0a,0x0d, 13,12, 0 lpm acc, z (lub z+) A co to za potworki? Znak końca linii (i do tego windowsowy :/) też nie jest potrzebny, wystarczy samo zero, chyba że urządzenie komunikuje się z windowsowym terminalem tekstowym przez rs-232. I skąd się wziął akumulator w AVR? W C robisz tak (avr-gcc): #include <avr/pgmspace.h>...
Wykluczone! _delay_ms jest makrem które działa tylko na wartościach stałych, użycie zmiennej spowoduje wkompilowanie biblioteki liczb zmiennoprzecinkowych a same opóźnienie będzie się miało nijak do tego oczekiwanego. Time może być stałą preprocesora (#define), nigdy zmienną. Dla zmiennej lepiej napisać osobną funkcję, która w pętli wykonuje _delay_ms(1)...
Example: [syntax=csharp]using System.Diagnostics; class Program { static void Main() { LaunchCommandLineApp(); } /// <summary> /// Launch the legacy application with some options set. /// </summary> static void LaunchCommandLineApp() { // For the example const string ex1 = "C:\\"; const string ex2 = "C:\\Dir"; // Use ProcessStartInfo class...
No jest ;) Ale powiedz mi bo ja używam niskiej głośności bo mam wzmacniacz PAM8403 audio na mojej PCB wiec wolume jest z przedziału 3-6 na 21 i analizator słabo wskazuje tzn nisko są słupki da to radę jakoś podnieść ?? No i częstotliwość odświeżania ale chyba na to już rady zbytnio nie będzie... Fajny bajer pobawię się tym... Myślał przez 17s Dobra,...
W czym rozwiazanie z zamiana *.c na *.inc oraz warunkowa kompilacja w pliku types.common.c jest lepsze od warunkowej kompilacji kazdego pliku types_xxx.c z osobna ? type1.c: [syntax=c] #ifdef TYPE1 //tutaj wszystkie funkcje #endif [/syntax] type2.c: [syntax=c] #ifdef TYPE2 //tutaj wszystkie funkcje #endif [/syntax] Jak chcesz bardziej wyszukanego rozwiazania...
W wywołaniu funkcji forEachEnum<Color> użyłeś std::make_index_sequence, co implikuje konieczność nadania wartościom pól enumeracji Color począwszy od 0. Wcale tak być nie musi, a same wartości tych pól mogą różnić się od siebie o więcej niż 1. Popraw kod, jeżeli jest to możliwe. CallEnum ma być metodą statyczną klasy Processor. Rzeczywiście,...
W LPCXpresso możesz bardzo łatwo tablicę ulokować, żeby rozpoczynała się od konkretnego adresu pamięci Flash. Klikasz w ustawienia projektu, pojawi się okno http://obrazki.elektroda.pl/3748232500_1... 1. Wybierasz MCU settings . 2. Klikasz Edit po czym pojawi się okienko konfiguracyjne pamięci. 3. Upewniasz się, że jest zaznaczona pamięć...
Oto przykładowe menu do nauki i analizy architektury programu. Musisz jeszcze przemyśleć typy danych, które będziesz wprowadzał (ujemne, z kropką dziesiętną, itp.). { "version": 1, "author": "Uri Shaked", "editor": "wokwi", "parts":
Masz gotowca: [syntax=c] //--------------------------------------... void InterpretujCmd( char znak ) { char const StrErrVal[] = "(at)Ev\r\n"; char const StrErrUnkown[] = "(at)Eu\r\n"; #define MAX_LEN_CMD 50 char static p = 0, cmd[MAX_LEN_CMD]; int cnt; char static buffer_str[100]; u32 baud; cmd[p] = znak; if ( p < MAX_LEN_CMD...
Witam, Kolego atom1477 z ciekawości uruchomiłem Twój projekt, z tym że zmodyfikowałem tak main-a, że najpierw wypełniam ALGO_TAB jakimiś tam danymi, a później jednorazowo kasuję sektor i te dane zapisuję do FLASH-a i u mnie działa zawsze ok, niezależnie od poziomu optymalizacji. Nie chciało mi się już robić jakiegoś porównywania danych, to co zapisuję...
Warto tu jeszcze zwrócić uwagę na to, że nie zawsze numer pinu GPIO odpowiada numerowi pinu na używanej płytce. Numery na płytce, czyli Dx to jest alternatywny sposób numeracji dla Arduino Core - to są stałe, którym przypisane są właściwe numery GPIO. Ważne tylko jest statyczne IP, bo inaczej prędko nasze urządzenie IoT się "zgubi" lub nawet zamieni...
A może zrób to sprawdzonym algorytmem? To jest szybkie liczenie CRC, wielomian dla MODBUS-a [syntax=c] static const U16 crc_table[256] = { 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, 0x0A00, 0xCAC1, 0xCB81,...
Nie jestem jeszcze pewien, jak to działa wewnętrznie. Myślałem o skanowaniu flash w poszukiwaniu wpisów 01PE w samym OBK, ale musiałbym pominąć CRC, prawda? [syntax=c] static int cur_adr = 0x11000; static int start_adr = 0x11000; static int max_adr = 0x200000; static int read_len = 0x1000; static byte *g_buf; static const char *search_magic = "01PE";...
Standardowo w c++ niema callback'ow na metode chyba ze statyczna.Naprzyklad w CBuilder jest cos takiego jak __closure. Jezeli pcap_loop to funkcja z libpcap to zrob capture jako static a w ostatnim parametrze podaj wskaznik na interface. callback prototype: void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet); Zobacz...
jak już koledzy wyżej wymienili: #F_CPU deklaruj w projekcie a poniżej moja drobna wariacja na temat:[syntax=c]#ifdef __TINYC__ // mod by: penknife <penknife1+wyswietlacz[at]gmail.com&g... 30 XII 2015 // Tiny C Compiler http://bellard.org/tcc/ // żeby przetestować uruchom: tcc -run "nazwa tego pliku.c" #include <stdio.h> #include <stdlib.h>...
Scrolla można by zrobić w oparciu o bufor cykliczny. Co prawda nie mam arduino z wyświetlaczem więc pozwoliłem sobie go zasymulować w terminalu w oparciu o kody ANSII https://filmy.elektroda.pl/48_1667431218...
https://github.com/john30/ebusd/blob/mas... najważniejsze nie brać ostatniego bajtu ;) "sizeof(data)-1" [syntax=c] #define symbol_t BYTE #define ESC 0xA9 #define SYN 0xAA static const symbol_t CRC_LOOKUP_TABLE[] = { 0x00, 0x9b, 0xad, 0x36, 0xc1, 0x5a, 0x6c, 0xf7, 0x19, 0x82, 0xb4, 0x2f, 0xd8, 0x43, 0x75, 0xee, 0x32, 0xa9, 0x9f,...
Nie sprawdzałem czy działa, exe jest tutaj http://mmm777.kilu.de/temp/MonitorOn.exe Źródło: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace MonitorOn { public partial...
const chara const static routing stm32 static
kondensator trzeszcz uruchomienie zasilacza sucho playstation kondensator
vestel firmware 17mb230 generator prądu
Windows 10/11: Usługa profilów użytkowników – błąd logowania, nie można załadować profilu Windows 11 nie widzi komputera Windows 10 w sieci – SMB, WS-Discovery, udostępnianie plików