MifTy Postat Mai 28, 2017 Partajează Postat Mai 28, 2017 pentru că mă plictiseam clasa una, şi nu aveam chef nici să dorm, nici... alte alea, m-am apucat să modific exemplul lui Nawrath ca să scoată şi pe LCD, varianta de librărie compilată de mars01...după fr'o 10 minute de compilări (mai mult pentru că uitam "amănunte" gen, un spaţiu în plus, şi se pierdea un caracter, etc.) a rezultat coada de mai jos.pinul de intrare e D5, ca în librărie... probabil se poate modifica, dar nu am chef să editez librăria, nici să încerc să definesc eu alt pin de intrare, nici... l-am testat direct pe breadboard, pe setupul de aici, singurele adăugiri fiind un potenţiometru de contrast, jumperii aferenţi şi LCD-ul... mai sunt destule modificări posibile, l-am făcut doar ca să îl am pentru un timp... sau poate nu mă mai complic, şi o să fac un Arduino pe o plăcuţă cu găurele, îi încarc codul ăsta, o cutie (am nişte savoniere mişto! ) şi gata, am un frecvenţmetru capabil de maximum 8 Mhz, după cum spune neamţul... // Frequency Counter Lib example /* Martin Nawrath KHM LAB3 Kunsthochschule f¸r Medien Kˆln Academy of Media Arts http://www.khm.de http://interface.khm.de/index.php/labor/experimente/ */ #include <FreqCounter.h> #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 10, 4, 3, 2); unsigned long frequency; int count_value; int LED_pin=13; void setup() { pinMode(LED_pin, OUTPUT); Serial.begin(115200); // connect to the serial port Serial.println("Frequency Counter"); lcd.begin(16, 2); lcd.print("Frequenzzahler"); delay(500); lcd.clear(); lcd.print("Nawrath + MifTy"); delay(1000); } void loop() { // wait if any serial is going on FreqCounter::f_comp=10; // Cal Value / Calibrate with professional Freq Counter FreqCounter::start(100); // 100 ms Gate Time while (FreqCounter::f_ready == 0) frequency = FreqCounter::f_freq; Serial.print(count_value++); Serial.print(" Freq: "); Serial.println(frequency); lcd.clear(); lcd.setCursor(0, 0); lcd.print(frequency); lcd.print(" Hz "); delay(20); digitalWrite(LED_pin,!digitalRead(LED_pin)); // blink Led } un cod "clasic" de frecvenţmetru mai puteţi găsi aici, (sketch chior, nu are nevoie de nici o librărie minus cea de LCD) dar nu vă recomand să-l folosiţi... decât dacă vreţi să măsuraţi frecvenţe de maximum 800 de... kilohertzi!peste 800 kHz afişarea devine instabilă şi indică overload! de amorul artei, codul copiat de-acolo şi modificat de mine până în momentul în care mi-am dat seama că mai mult de 800-900 kHz nu poate )))))))valentinmarcarian, eşti mulţumit?că tot îmi cereai "să vă arăt ce-am mai făcut"! #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 10, 4, 3, 2); const int pulsePin = 5; // Input signal connected to Pin 12 of Arduino int pulseHigh; // Integer variable to capture High time of the incoming pulse int pulseLow; // Integer variable to capture Low time of the incoming pulse float pulseTotal; // Float variable to capture Total time of the incoming pulse float frequency; // Calculated Frequency void setup() { pinMode(pulsePin, INPUT); lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("Instructables"); lcd.setCursor(0, 1); lcd.print(" Freq Counter "); delay(5000); } void loop() { lcd.setCursor(0, 0); lcd.print("Frequency is "); lcd.setCursor(0, 1); lcd.print(" "); pulseHigh = pulseIn(pulsePin, HIGH); pulseLow = pulseIn(pulsePin, LOW); pulseTotal = pulseHigh + pulseLow; // Time period of the pulse in microseconds frequency = 1000000/ pulseTotal; // Frequency in Hertz (Hz) lcd.setCursor(0, 1); lcd.print(frequency); lcd.print(" Hz"); delay(500); } Link spre comentariu
nico_2010 Postat Mai 29, 2017 Partajează Postat Mai 29, 2017 pinul de intrare e D5, ca în librărie... probabil se poate modifica, dar nu am chef să editez librăria, nici să încerc să definesc eu alt pin de intrare, nici... Probabil ca sigur nu se poate modifica. Pinul D5 corespunde cu PD5 (pinout ATMega328), care este intrare pentru Timer1. Varianta cu functia "PulseIn" este cea mai proasta cu putinta (este "blocking solution"). Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum