Sprawa rozwiązana. Na kompilatorze nie wiem dlaczego pojawił się komunikat CZASY: oraz " Micros enabled " i " Micros desabled". Oczywiście aktywna była druga forma. Kompiluje się odruchowo i nie patrzy się co tam nagle wyskoczyło. Jak odblokowałem Micros program został skompilowany. Ot i wszystko.
Przeanalizuj(zastosuj) przykładowy szkic "blink without delay". Zrezygnuj ze stosowania funkcji delay na rzecz millis , micros.
Dlaczego uważacie, że kręcenie się w głównej pętli z użyciem millis (albo micros jakby ktoś chciał mieć lepszą rozdzielczość) jest błędne ? Autor w sumie nie robi celownika do bomby atomowej.
Wymajstrowałem coś takiego : [syntax=c] unsigned long int hits=0; unsigned long int herz=0; unsigned long ti=0; unsigned long now=0; void setup() { Serial.begin(9600); } void loop() { detachInterrupt(0); // wyłączam interrupt na czas liczenia herz=(1000*1000/hits); Serial.println(hits); attachInterrupt(0, pulse, FALLING); delay(50); } void pulse() {...
https://obrazki.elektroda.pl/5077182400_... MICROS to niezależny dystrybutor praktycznie wszystkich bardziej i mniej popularnych mikrokontrolerów. Dzięki swojej pozycji nie koncentruje się na promocji żadnej wybranej marki i jest w stanie zaoferować optymalny produkt do wskazanego zastosowania. Mnogość dostępnych na rynku architektur...
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...
Witam, Mam problem z interpretacją danych uzyskanych z analogowego czujnika dfrobot sen0240, kod z arduino poniżej. Czy mógłby mi ktoś wytłumaczyć ten kod/wyjaśnić w jaki sposób modyfikowane czy pozyskiwane są sygnały z czujnika? I dlaczego z danych robiony jest kwadrat? Rozumiem, że dane ujemne trzeba odbić względem osi ox, ale czy nie można zrobić...
Witam po dłuższej przerwie spowodowanej natłokiem innych obowiązków. Tak jak Panowie sugerowali, zmieniłem kod tak aby liczył mi czasy w MICROS pomiędzy kolejnymi impulsami. W Arduino wszystko działa jak należy. Powstał nowy problem z przesyłem zebranych danych poprzez kabel do Processingu. Na podstawie opisu z strony http://physics.uwb.edu.pl/wf/fi-bot/?p=5...
Arduino to popularna platforma mikrokontrolerowa, umożliwiająca szybkie tworzenie urządzeń i systemów elektronicznych. Ogromna ilość przykładowych projektów, wielka społeczność inżynierska, skupiona wokół tej koncepcji oraz łatwe w użyciu środowisko deweloperskie, uczyniły z Arduino produkt, którego sukcesu nikomu dotąd nie udało się przebić. Jednocześnie...
W tym zastosowaniu, bez problemu można napisać prosty kod, który będzie 100% skuteczny i nie będzie korzystał z przerwań. Nie da się w prosty sposób. Używając odliczania czasu (cos w rodzaju micros() ) trzeba użyć przerwań od np przepełnienia timera. Jesli tego się nie zrobi, to licznik 8bit szybko sie przepełni i w pętli głównej możemy zauważyć flagę...
Chyba nie rozumiem Twojego programu. Funkcja pulseIn mierzy czas trwania impulsu, trzeba ją zamienić na prędkość obrotową, która generalnie jest odwrotnością czasu. Poza tym ta funkcja blokuje działanie programu. Moim zdaniem lepiej będzie podłączyć czujnik Halla do wejścia przerwania i ustawić je na wykrywanie zbocza, w sumie obojętne narastającego...
Jak chcesz mieć czas rzeczywisty to do projektu dodaj jakiś RTC. I tak już używasz I2C więc możę być DS3231. Definiujesz sobie zmienne przechowujące sekundy/minuty/godziny. Raz przy starcie odczytujesz czas z RTC i napełniasz swoje zmienne, p potem ewentualnie kontrolnie co minutę robisz korektę czasu wg RTC, DS3231 - jest bardzo dokładny. Można też...
STMicroelectronics to jeden z najpopularniejszych producentów mikrokontrolerów w Polsce. Swoją renomę zawdzięcza nie tylko udanym konstrukcjom, ale i wdrażaniu najnowszych technologii oraz bogatej ofercie. W niniejszym artykule prezentujemy niektóre z ostatnio wprowadzonych układów ST oraz wybrane ciekawe modele, które od jakiegoś czasu cieszą się dużą...
Witam! Posiadam tablice LED, które wygrzebałem z... no nie ważne. Ważne, że nic o tym układzie nie wiem, zgranie programu się udało, ale odczytanie jak to działało, nie jest warte zachodu ;). Long story short: siedzą tam dwa typy procków: AT89S51 oraz AT89C2051 oba są podłączone w taki sposób, że „na świat” wystawiony jest tylko jeden pin...
micros() i Millis() to funkcje oparte o timer i przerwania z odpowiednią rozdzielczością, zależną od zastosowanego kwarcu: Micros() Returns the number of microseconds since the Arduino board began running the current program. This number will overflow (go back to zero), after approximately 70 minutes. On 16 MHz Arduino boards (e.g. Duemilanove and Nano),...
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ć.
Próbowałeś z poleceniem millis() lub micros() ?
W podlinkowanym kursie uczysz się używać przycisków bez delay, eliminując drganie styków, może być biblioteka, np. bounce2. Poszczególne efekty led wpisujesz w np. 10 różnych funkcji. Po wykryciu wciśnięcia przycisku zmieniasz wybraną zmienną po kolei od 0-9 i znowu od 0. W loop wywołujesz tę funkcję, która odpowiada numerkowi, może być np. konstrukcja...
Odczyt przetwornika A/C też wprowadza jakieś opóźnienie, zwłaszcza jeśli używasz funkcji bezpośrednio AnalogRead(). Jak pisał przedmówca, mógłbyś użyć PWM-u, w "odbiornikach" ustawić przerwanie na wyzwalanie obydwoma zboczami i wewnątrz przerwania z użyciem funkcji micros() mierzyć czas stanu niskiego i wysokiego, a ich iloraz da Ci współczynnik PWM. Arduino...
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...
No, silnik ma się poruszać ze średnią prędkością. Jak to przeliczyć na liczbę kroków na sekundę? Funkcja millis() może się okazać za mało dokładna (ona czasem przeskakuje o 2) - chyba wypadnie używać Jeśli miałbym zrobić to na Arduino, to jak zrobić do niego program? Poczytaj, co na forum o tym napisano. Ja coś pisałem o strukturze programu, może ktoś...
Spróbuj poniższy kod: nie będą działać poprawnie . Będą działać X razy wolniej (gdzie X to wartość preskalera). Najprościej jest zdefiniować własne funkcje np. my_millis(). Lepszym rozwiązaniem będzie zmiana definicji "płytki". Skopiować tę, którą obecnie używasz pod inną nazwą i zmienić parametr build.f_cpu : [syntax=text]my_arduino_3V.build.f_cpu=3...
Witam, przypuszczalnie te sygnały są na tyle wolne w porównaniu z szybkością działania procesora, że można to zrobić całkowicie programowo. Dla każdego z sygnałów trzeba pamiętać "poprzedni stan". Trzeba dostatecznie szybko "kręcić się" w nieskończonej pętli, sprawdzając zmianę poziomu sygnału. W zależności od potrzeby, można wykrywać każdą zmianę,...
Dlaczego tak długo? Nie będę szukał błędu w tym rozumowaniu, po prostu to zmierzyłem, właśnie analizatorem logicznym, biblioteka dla C by Peter Dannegger nieco poniżej 20ms, a w Arduino zmierzone millisami odczyt trwa nieco ponad 20ms. Obie biblioteki robią pełny odczyt i sprawdzanie CRC. Będzie mi się kiedyś chciało to też sprawdzę w Arduino. (at)madiz08,...
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...
Sam pomiar czasu na Arduino, to prosta sprawa: https://docs.arduino.cc/language-referen... - odczytujesz pin, do którego jest podłączony pierwszy czujnik, po wykryciu zmiany odczytujesz czas, potem odczytujesz pin od drugiego czujnika, znów po zmianie odczytujesz czas, na koniec odejmujesz te dwa czasy i dostajesz informację,...
nie mogę korygować czasu trwania odstępu LOW między tymi impulsami A jak myślisz ile czasu trwa to: [syntax=c]if ( micros() - czas > 100 ){ czas = micros(); }[/syntax] Ja wprawdzie arduino za bardzo się nie bawie, ale coś mi mówi że cosik to zajmuje. Zobacz jak działa np to: [syntax=c]while (1){ digitalWrite ( 0, HIGH ); delayMicroseconds (1); digitalWrite...
Witam, nie wiem czy dobrze rozumiem, ale podejrzewam, że sytuacja wygląda następująco. Uderzenie w czujnik powoduje, że drga on w sposób mniej lub bardziej sinusoidalny, drgania niewątpliwie są gasnące. Powinieneś po pierwsze zrealizować szczytowy detektor amplitudy, w sumie da się to zrobić programowo. Następnie musisz śledzić tę amplitudę. Jeżeli...
I teraz najważniejsze pytanie - jak policzyć wartość do wstawienia w nawiasy, żeby silnik faktycznie obracał się tak jak potrzebuję. Obliczenie tego nie jest problemem ale generalnie ta metoda która próbujesz ma jedną wielką wadę. To że wyliczenie czasu dotyczy pojedynczego kroku i jakby tu nie kombinować opóźnienia w tej pętli, nawet uwzględniając...
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,...
Jest goła płytka bez niczego. nie wiem jaka wersja do jakiego wyświetlacza /narazie w to nie wnikam/, ale tak jak pisałem próbuję kompilować żeby zrozumieć co robię źle. Nie ukrywam że wolałym pierwszą wersję ale też mam problemy z bibliotekami. Teraz próbuję jeszcze raz ten sam kod a błedy takie: C:\Users\Bolszoy\Desktop\Radio\internet_...
Podpiąłem moduł do VIN i odziwo coś tam zaczeło działać Do VIN w Nano? Ale to jest wejście zewnętrznego zasilania 7-12V. Dodano po 4 Pytanie dlaczego karta 2GB nie działa? dodam, że ma ona swoje lata i do demonów prędkości nie należy. Zawsze możesz spróbować zmniejszyć prędkość SPI do czytnika. Zamiast[syntax=c]SD.begin(4)[/syntax]Wpi...
W standardowej bibliotece Arduino masz dwie funkcje, pierwsza to: millis(), druga do: micros(). Podają one aktualny stan "licznika" odpowiednio milisekund i mikrosekund. Ale tu uwaga, licznik mikrosekund zmienia się co około 4us. Można zatem ustalać czas tak: [syntax=c] long czas; long roznica; czas = micros(); ... ... roznica = micros()-czas; [/syntax]
Wolał bym przenośny podsłuch. Nie mam laptopa a byłem kilka razy z PCem + Wielki UPS :D samo możecie sobie wyobrazić... edit Program przetestowany i działa na terminalu z PC. [syntax=c]#include <SoftwareSerial.h> #include <Adafruit_GFX.h> #include <Adafruit_TFTLCD.h> #define LCD_CS A3 #define LCD_CD A2 #define LCD_WR A1 #define LCD_RD...
const int stepPin = 8; unsigned long stepperTimer; int currentStepperSpeedDelay = 500; // bieżąca prędkość krokowa opóźnienie byte stepInState = 0; // stan wysoki lub niski dla następnego kroku int stepCounter = 0; // licznik kroków int targetSteps = 200; // docelowa ilość kroków bool running = false; // flaga informująca, czy silnik działa void setup()...
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,...
Okazało sie ze trzeba bylo sie sukupic popatrzec na mostek L293D odpowiednio podlaczyc i wystarczy [syntax=text]#include <plcLib.h> #define diodaPIN 10 /* Programmable Logic Controller Library for the Arduino and Compatibles Analogue Input / PWM Output Connections: Input - Analogue input or potentiometer connected to input X0 (Arduino pin A0)...
Zobacz co potrafi ticker() [syntax=arduino] #include "Ticker.h" void printMessage(); void printCounter(); void printCountdown(); void blink(); void printCountUS(); bool ledState; int counterUS; Ticker timer1(printMessage, 0, 1); Ticker timer2(printCounter, 1000, 0, MILLIS); Ticker timer3(printCountdown, 1000, 5); Ticker timer4(blink, 500); Ticker timer5(printCountUS,...
Witam, napisałem prościutki programik do odpalenia buzzera pc. Problem w tym że niezależnie od częstotliwości po ok 18 sekundach buzzer się wyłącza. Jakieś pomysły, gdzie leży problem? [syntax=c] int buzzer = 32; unsigned long sound = 0; void setup() { pinMode(buzzer, OUTPUT); } void loop() { micros(); if(sound == 0) { sound = micros(); } if(sound +...
Może zamiast mierzyć ilość impulsów w czasie lepiej będzie mierzyć czas pomiędzy impulsami z użyciem micros(). zastanawia mnie skąd taka rozbieżność w pomiarach że skacze +- 200 obr, jakby "środowisko" w Arduino miało jakieś bóle. Daj na wejście sygnał o stałej częstotliwości i będziesz wiedział czy to "arduino ma jakieś bóle" czy problem jest gdzie...
Na tej stronie http://obrazki.elektroda.pl/4933211300_1... Zasada działania: - prąd płynący z pin 8 do pin 1 ustawia styki przekaźnika w pozycji "reset" - prąd płynący z pin 1 do pin 8 ustawia styki przekaźnika w pozycji "set" - przekaźnik utrzymuje swoją pozycję styków nawet po odłączeniu zasilania Na tej stronie http://obrazki.elektroda.pl/5524789200_1...
Najlepiej zacznij od kursu Arduino, darmowy jest np. tu: https://forbot.pl/blog//kurs-arduino-pod... Ściągnij biblioteki do 1Wire, Ds18b20, LCD, najlepiej kilka, naucz się ich używać bez delay, wybierz, która Ci leży najlepiej, rozważ również inne czujniki np. LM35. Twój program powinien być "wielozadaniowy",...
To tylko potwierdza, że tym bardziej nie należy tego używać w przerwaniu ze względu na czas trwania zagnieżdżonych funkcji. Czas trwania wykonania funkcji update() będzie w tym wypadku niewspółmiernie mniejszy niż czas, co jaki należałoby wykonać przerwanie dla jej wywołania. Nie wiem skąd się bierze ten upór do czytania dokumentacji do frameworka...
co jakiś czas Sam sobie odpowiedziałeś, użyj funkcji nie blokującej programu millis(), micros() lub jakiejś biblioteki obsługi timera do odliczania czasu. Po upływie określonego czasu załącz drugi silnik, a potem go wyłącz po określonym czasie albo w odpowiednim miejscu.
Część nie na temat usunąłem - dyskutujemy tu o delay i proszę trzymać się tematu. Może masz jakiś lepszy pomysł kolego jak zrealizować takie zadanie nie używając funkcji dealy? Zaprzyjaźnij się z funkcją micros() ( lub millis(), w zależności od tego, jakie interwały czasowe Cię interesują ). Jeśli zwyczajnie chcesz zastąpić funkcję delay() na nieblokujący...
Jestem na etapie studium wykonalności komunikacji bezprzewodowej pomiędzy mikroprocesorami AVR. Zależy mi na komunikacji między nimi na odległość do 10 km. W celu przesyłania kilku lub kilkunastu Bajtów na sekundę. Dobrze by było gdyby było to rozwiązanie gotowe, z interfejsem SPI/UART lub innym. Dodatkowym atutem była by komunikacja dwustronna, ale...
A co by to zmieniło i jak miałoby to wyglądać w przerwaniach? Masz jedną stabilną częstotliwość odświerzania cyfr. Ale przerwania to nie po arduinowemu ;) Typowe przerwania arduino ma tylko na wejściach INT. Reszte trzeba sobie dopisać. Od biedy można podać zegar np 1khz na wejście. Poświate prawdopodobnie masz z powodu opóźnienia zgaszenia, trzeba...
Jak najbardziej jest taka opcja i wspomniałem o tym w tekście. Też zamierzam ją wypróbować. Z ciekawości spojrzałem jak jest w Added after 4 Też tak patrzę na ich format RAW ale w hex, bez timingów: [syntax=c] #define MICROS_PER_TICK 50L // must be with L to get 32 bit results if multiplied with rawbuf[] content. [/syntax] Oni zakładają, że rozdzielczość...
Istnieje pewna alternatywa dla Arduino, platforma programowana jest właśnie w .NET. Poszukaj w google pod hasłem: .NET Gadgeteer Przykładowe informacje: [url=http://www.i-programmer.info/news/9... i [url=http://www.extremetech.com/computin...
300 us to czas przerwy który gwarantuje prawidłową prace. Wyliczona częstotliwość jest błędna. A wyświetlacz działa więc chyba mam dobre założenia. Gdybym robił to na zasadzie(kod na szybko): a...g - segmenty e1...e6 - nr cyfry(ULN masujący) [syntax=c] /* micros(); unsigned long czas; */ czas = micros(); if(czas + 2000 > micros){ digitalWrite(a,1);...
katalog micros oracle micros micros kraków
artur stereo schemat kleić fornir gorąco koparka ładowarka jazda
pompa ciepła amica wa2s814bkisvd
Cyfrowy miernik hałasu VOLTCRAFT w Łodzi - gdzie kupić? Piec Fagor FEB-20E nie odpala - przyczyny i diagnostyka