Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Nu imi platiti coletul cu cardul ...

Mi-au disparut amigdalitele ?

Exista vreun plan de terorizare p...

Schimbare adresa DNS IPv4 pe rout...
 Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric

CIV auto import
 Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...

Cumparat/Locuit in apartament si ...
 Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...

Kanal D va difuza serialul “...
 

Arduino

- - - - -
  • Please log in to reply
50 replies to this topic

#37
bbox

bbox

    Member

  • Grup: Members
  • Posts: 743
  • Înscris: 12.05.2005

View PostIonutzz2013, on 26 ianuarie 2023 - 21:39, said:

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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,440
  • Înscris: 10.08.2005

View PostFlorinManea, on 27 ianuarie 2023 - 17:03, said:

Sanse alternative  de suport gasesti pe elforum, rubrica Arduino.
E comunitatea mai mare acolo.
Si daca o tratezi cu aceeasi lipsa de respect la ce bun?

#39
Ionutzz2013

Ionutzz2013

    Junior Member

  • Grup: Junior Members
  • Posts: 175
  • Înscris: 05.10.2022

View PostMarianG, on 27 ianuarie 2023 - 14:10, said:

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.
maine o sa il scot in format text azi eram pe tel si nu aveam cum sa il scot. Nu aveam laptopu la indemana  iar pe tel nu merge sa deschid acele fisiere.

#40
Ionutzz2013

Ionutzz2013

    Junior Member

  • Grup: Junior Members
  • Posts: 175
  • Înscris: 05.10.2022
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.
COD!


#41
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,556
  • Înscris: 06.03.2016
Vezi ca arhiva aia are un fisier README.md. Inseamna "Citeste-ma". L-ai citit?

#42
Ionutzz2013

Ionutzz2013

    Junior Member

  • Grup: Junior Members
  • Posts: 175
  • Înscris: 05.10.2022
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.

#43
Ionutzz2013

Ionutzz2013

    Junior Member

  • Grup: Junior Members
  • Posts: 175
  • Înscris: 05.10.2022
Asa face cand incerc sa il incarc

Attached Files



#44
Userul_80

Userul_80

    Member

  • Grup: Members
  • Posts: 558
  • Înscris: 26.06.2022
nu ai librariile instalate

#45
maccip

maccip

    46 ani

  • Grup: Senior Members
  • Posts: 33,261
  • Înscris: 06.01.2007
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,440
  • Înscris: 10.08.2005
de ce te arunci deja la procesari de semnal?

incepem cu pasi mici
comunicarea cu iesirile, ecranul LCD 2x16.

#47
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,556
  • Înscris: 06.03.2016

View PostIonutzz2013, on 28 ianuarie 2023 - 19:48, said:

Asa face cand incerc sa il incarc

View PostIonutzz2013, on 28 ianuarie 2023 - 19:18, said:

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.
Nu pare ca ai citit. Iti spune clar ca-i trebuie o versiune anume de ArduinoFFT.
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
Userul_80

Userul_80

    Member

  • Grup: Members
  • Posts: 558
  • Înscris: 26.06.2022

View Postred46, on 25 ianuarie 2023 - 22:11, said:

Pai cu asta trebuie sa incepi. Daca nu inveti sa adaptezi / scrii codul o sa tot primesti erori.
Uite ca eu habar nu am programare dar m am adaptat. Am citit in stanga in dreapta si mi am facut destuoe montaje cu arduino. Ba in ultimul timp nu mai cumpar nano si imi incarc bootloader ul in atmega 328 si imi fac treaba. Ma descurc si cu nodemcu numai ca folosesc ce este deja facut pe net. Nu pot pleca de la zero pt ca repet nu știu programare dar pot face cate ceva.

#49
maccip

maccip

    46 ani

  • Grup: Senior Members
  • Posts: 33,261
  • Înscris: 06.01.2007
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,440
  • Înscris: 10.08.2005
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
elef

elef

    Senior Member

  • Grup: Senior Members
  • Posts: 4,671
  • Înscris: 03.10.2014
Pt arduino tre un minin de cpp fiindca de fapt asta e limbajul minune folosit.

Anunturi

Second Opinion 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

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate