![]() |
Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Arduino
Last Updated: Jan 29 2023 20:50, Started by
Ionutzz2013
, Jan 25 2023 19:52
·
6

#37
Posted 27 January 2023 - 17:36

de ex un spectrum analyser imi da eroarea din imagine cand o incarc in arduino ide nici nu apuc sa ii fac upload. Programul tau (Spectrum_analyser) nu este o librarie, iti da eroarea ca tu incerci sa-l incarci ca librarie. Scoate fisierul cu extensia .ino din arhiva si incarca-l cu File/Open |
#38
Posted 27 January 2023 - 17:42

#39
Posted 27 January 2023 - 21:48

SI nu ar fi corect fata de noi sa ne prezinti cod in format text ? Ca nu sta nimeni sa-si instaleze Arduino IDE sa-ti poata explica o variatie de limbaj C. |
#40
Posted 28 January 2023 - 11:02

Asa arata format text mai mult nu stiu ce sa ii fac
// Include the libraries: // LiquidCrystal_I2C.h: https://github.com/johnrickman/LiquidCrystal_I2C #include <Wire.h> // Library for I2C communication #include <LiquidCrystal_I2C.h> // Library for LCD LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2); // I couldn't for the life of me to get faster fft working on stm32f103c8t6 // I tried the hardware dsp and arm math // #include "stm32f1xx_hal.h" // ADC is too fucking slow #include <arduinoFFT.h> #define sampling_frequency 40000 // in Hz #define number_of_samples 512 // 256 or 1024 is sane /* double real_sample[number_of_samples]; double imaginary_sample[number_of_samples]; ArduinoFFT<double> FFT = ArduinoFFT<double>(real_sample, imaginary_sample, number_of_samples, sampling_frequency); */ float real_sample[number_of_samples]; float imaginary_sample[number_of_samples]; ArduinoFFT<float> FFT = ArduinoFFT<float>(real_sample, imaginary_sample, number_of_samples, sampling_frequency); float bin_ratio = 0.31; // this creates the required characters void animationSetup() { for (int i=0; i < 8; i++) { byte charLine[8]; for (int j=0; j < 8; j++) { if (j >= i) charLine[7-j]=B00000; else charLine[7-j]=B11111; } lcd.createChar(i, charLine); } } void setup() { delay(10000); //Serial.begin(115200); lcd.init(); lcd.backlight(); animationSetup(); analogReadResolution(12); // arduino stm32 library doesn't know this functions pinMode(PA0, INPUT_ANALOG); Serial.println(666); if (number_of_samples == 256) bin_ratio = 0.26; if (number_of_samples == 512) bin_ratio = 0.28; if (number_of_samples == 1024) bin_ratio = 0.31; } void draw_spectrum(float spectrum[]) { static char line0[17]; static char line1[17]; for (int column = 0; column < 16; column++) { int int_spectra = spectrum[column]; if (int_spectra > 16) { line0[column]=255; line1[column]=255; } else if (int_spectra > 9) { line0[column]=int_spectra-9; line1[column]=255; } else if (int_spectra == 9) { line0[column]=32; line1[column]=255; } else if (int_spectra == 8) { line0[column]=32; line1[column]=255; } else if (int_spectra < 1) { line0[column]=32; line1[column]=32; } else { line0[column]=32; line1[column]=int_spectra; } } lcd.setCursor(0,0); lcd.print(line0); lcd.setCursor(0,1); lcd.print(line1); } void adc() { uint32_t reading_min = 9000; uint32_t reading_max = 0; uint32_t previous_millis = millis(); for (int i=0; i < number_of_samples; i++) { uint32_t previous_micros = micros(); uint32_t reading = analogRead(PA0); real_sample[i] = analogRead(PA0); imaginary_sample[i] = 0; if (reading < reading_min) reading_min = reading; if (reading > reading_max) reading_max = reading; int micro_delay = previous_micros + 21 - micros(); if (micro_delay > 0 && micro_delay < 22) delayMicroseconds(micro_delay); // this condition here so we don't accidentally call a negative delay } Serial.print("Min: "); Serial.println(reading_min); Serial.print("Max: "); Serial.println(reading_max); } void loop() { uint32_t previous_millis = 0; static float spectrum[16]; static float envelope_min = 100000; static float envelope_max = -100000; uint32_t generic_timer = 0; uint32_t previous_time = millis(); generic_timer = millis(); adc(); Serial.print("Sampling time: "); // should be between 22 and 30 milliseconds Serial.println(millis() - generic_timer); generic_timer = millis(); FFT.windowing(FFTWindow::Hamming, FFTDirection::Forward); Serial.print("Windowing time: "); Serial.println(millis() - generic_timer); generic_timer = millis(); FFT.compute(FFTDirection::Forward); Serial.print("Compute time: "); Serial.println(millis() - generic_timer); generic_timer = millis(); FFT.complexToMagnitude(); Serial.print("Magnitude time: "); Serial.println(millis() - generic_timer); float spectrum_min=100000; float spectrum_max=-100000; long starting_point = number_of_samples/2; for (int i = 15; i > -1; i--) { double average = 0; // for 256 samples 0.28 shows all frequencies, 0.26 shows the sane ones // for 512 samples 0.29 shows all frequencies, 0.28 shows the sane ones // for 1024 samples 0.35 shows all frequencies, 0.31 shows the sane ones long delta = starting_point * bin_ratio; if (delta < 1) { delta = 1; if (starting_point < 1) starting_point = 1; // 3 is good for 512 samples, 1 is good for 256 sambles. this line is here just to prevent charshing in case the numbers go too low } starting_point = starting_point - delta; for (long pointer = starting_point; pointer < starting_point + delta; pointer++) { average += real_sample[pointer]/delta; } // Serial.println(starting_point); // useless debug information double log_average = log(average); if (log_average < spectrum_min) spectrum_min = log_average; if (log_average > spectrum_max) spectrum_max = log_average; spectrum[i] = log_average; } envelope_min += 0.01; if (envelope_min > spectrum_min) envelope_min = spectrum_min; envelope_max -= 0.01; if (envelope_max < spectrum_max) envelope_max = spectrum_max; Serial.print("Envelope min: "); Serial.println(envelope_min); Serial.print("Envelope max: "); Serial.println(envelope_max); for (int i=0; i < 16; i++) { spectrum[i] = (spectrum[i] - envelope_min) * (17 - 0) / (envelope_max - envelope_min) + 0; } generic_timer = millis(); draw_spectrum(spectrum); Serial.print("Drawing time: "); Serial.println(millis() - generic_timer); Serial.print("Frame time: "); Serial.println(millis()-previous_time); Serial.println(); } Attached Files
Edited by MarianG, 28 January 2023 - 13:59.
|
#41
Posted 28 January 2023 - 17:46

Vezi ca arhiva aia are un fisier README.md. Inseamna "Citeste-ma". L-ai citit?
|
#42
Posted 28 January 2023 - 19:18

Am citit da nu zice nimic care sa ma ajute. Linku de pe youtube unde am vazut montaju finctional si cel de unde am descarcat libraria.
|
#45
Posted 28 January 2023 - 20:31

Cand analizezi erorile, ia-le si tu pe rand.
ArduinoFFT e definit in <arduinoFFT.h>, pe care tu il ai referentiat in fisier. Deci, daca nu ai instalat libraria corespunzatoare, ar trebui mai intai sa ai eroarea ca nu gaseste arduinoFFT.h Daca o ai instalata, atunci cauta in arduinoFFT.h sa vezi daca e definit ArduinoFFT. Daca nu, inseamna ca e o eroare O versiune incompatibila cu codul din exemplul tau. Putin probabil insa, deoarece libraria ar putea fi mai noua si e back-compatible, Cand iei cod de pe net, trebuie sa intelegi cam cum functioneaza un limbaj de programare si ce asteapta un compilator de la tine. Daca cumva ai eroarea ca nu gaseste fisierul, ocupa-te mai intai de ea, dupa care de restul erorilor. Daca nu gaseste un fisier, e clar ca asta va genera tone de alte erori. Daca-l gaseste, ar trebi sa te asiguri ca-i compatibil Eu cred ca da, insa tot ce-i posibil. |
#46
Posted 28 January 2023 - 21:32

de ce te arunci deja la procesari de semnal?
incepem cu pasi mici comunicarea cu iesirile, ecranul LCD 2x16. |
|
#47
Posted 28 January 2023 - 21:42

Asa face cand incerc sa il incarc
Am citit da nu zice nimic care sa ma ajute. Linku de pe youtube unde am vazut montaju finctional si cel de unde am descarcat libraria. Alta chestie, codul asta a fost gandit pentru microcontrollere STM32, nu AVR, si s-ar putea sa-ti ruleze mult prea incet sau sa intampini limitari de memorie. E normal sa nu intelegi nimic, dar daca nu cauti pe cont propriu si nu iti bati capul sa intelegi ceva, nu-si pierde nimeni timpul sa te ajute oricat de binevoitor ar fi. |
#48
Posted 29 January 2023 - 18:08

Pai cu asta trebuie sa incepi. Daca nu inveti sa adaptezi / scrii codul o sa tot primesti erori. |
#49
Posted 29 January 2023 - 19:59

Dar nu vad ce mare programare trebuie sa stii. Ai o mica gramatica a limbalului ©, plus o multime de functii de prin librarii, functii pe care oricum daca ai fi programator tot nu ai sti ce fac.
E un minim de programare, acolo. Nu poate fi numita programare in sensul propriu. Probabil ca exista carti bune si de Arduino, pe care ti le poate recomanda ChatGPT si gasi pe net. In maxim o saptamana ai parcurs toata cartea si inveti toata programarea de care ai nevoie pentru asa ceva. Evident, ca nu o sa devii programator. Arduino e gandit sa fie simplu de programat si de catre copii. Eu azi am facut cu copiii mei un detector de lumina cu o fotorezistenta. Le-am explicat conceptele de baza si ne-am jucat cu un arduino nano. Au priceput notiunile de baza necesare in automatizare. Au inteles cam ce inseamna sa automatizezi ceva. Ca-i un senzor, ca-i un espresor de cafea sau o masina de spalat. Citesti din senzor, pornesti motoare, deschizi relee, conform unei logici pe care tu, o gandesti. A fost ceva nou pentru ei ca nu cred ca intelegeau de fapt cum functioneaza automatele astea simple. Ma rog, mai trebuie sa lucrez cu ei, sa mai facem si alte proiecte cu alti tip de senzori pe care nu-i am acum, insa ideea e ca un copil de 10 ani si unul de 13, pot intelege chestiile astea. |
#50
Posted 29 January 2023 - 20:37

alegi un interval de timp
la care citesti o valaore de pe pinul cu microfon (intre 0 si 1023) afisezi valoarea ca atare pe ecran (asta ca sa vezi ca iti merge microfonul si reda cat de cat fidel realitatea) dupa aia transformi valoarea in "indicator de nivel", aici este partea interesanta cu ce tipar ai la indemana si ce caracter este "o casuta plina" parte din asta ti-a fost prezentat de chatGPT prin intermediul colegilor. |
#51
Posted 29 January 2023 - 20:50

Pt arduino tre un minin de cpp fiindca de fapt asta e limbajul minune folosit.
|
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users