Collegamento arduino su pc fisso

Ciao,
grazie per la risposta il prodotto è proprio quello di amazon ( https://www.amazon.it/AZDelivery-UNO-Board-Typ-Parent/dp/B081TC1752 ) . Ho già installato questi driver ma comunque il problema persiste.
Ti viene in mente altro?

Preoccupa molto che il fisso ogni tanto riconosca l’arduino come tastiera…
Quando inserisci la scheda sul fisso in gestione dispositivi cosa appare?

1 Like

Ti allego uno sceen, dal mio punto di vista sembrerebbe andare bene.

Sembrerebbe sulla COM5

esatto, ormai che stiamo discutendo vi chiedo un favore, senza creare un ulteriore post. Ho dei problemi con il mini software che sto sviluppando. Praticamente dovrebbe accendersi una luce quando supero una certa soglia di rumore. Ho provato ad utilizzare un singolo if, ma, non è la soluzione perchè al minimo disturbo di valore si accende e non funziona… Allora ho cercato di creare una serie di 3 if e solo nel caso si superassero i 3 step la luce si dovrebbe accendere ma, probabilmente sbaglio qualcosa. Vi allego il software, probabilmente voi con la vostra esperienza in un secondo troverete il problema.

int re = 2;
int mic = A2;
int c=0;

void setup() {
   Serial.begin(9600);
   pinMode(re , OUTPUT);
   pinMode(mic , INPUT);
 
  // put your setup code here, to run once:

}

void loop() {


 

 int micvalore = analogRead(mic);


 if(micvalore>620) //primo if
 
{
 c++; 
 int micvalore2 = analogRead(mic);
  
   if(micvalore2>620)  //secondo if
    {
      c++;
      int micvalore3 = analogRead(mic);

     
        if(micvalore3>620) // terzo if
        {
            c++; 
        }

         else //terzo else

        {
           c=0;
        }

    }

   else // secondo else

     {
       c=0;
     }

  
   
}

  
else //primo else

{
   c=0;
}
  

 Serial.print("\t");
 Serial.print("c=");
 Serial.print(c);
 Serial.print("\t");
 


if(c==3)

{
  digitalWrite(re , LOW);
  delay(4000);
  c=0;
  delay(10);

 
 Serial.print("\t");
 Serial.print("c nell'if =");
 Serial.print(c);
 Serial.print("\t");

  
}


else
{
    digitalWrite(re , HIGH);
}
   

  // put your main code here, to run repeatedly:
 


   


   
}

preciso che il circuito è costituito da un relè ( uscita digitale 2) , un semplicissimo microfono ( ingresso analogico 2)

@Enry1995 : in conformità al REGOLAMENTO , punto 7, cortesemente edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l’icona </> nella barra degli strumenti per contrassegnarla come codice. Così com’è non è molto leggibile … assicurati inoltre anche di aver correttamente indentato il codice nell’IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmdT su un Mac all’intero del IDE). Grazie.

Guglielmo

1 Like

Iniziamo da “che microfono usi?” e che uscite ha?
Ci sono quelli che quando il livello del suono è molto basso restituiscono uno zero mentre altri restituiscono un valore intorno a 512. dipende dall’elettronica che c’è dietro il microfono.

Poi sarebbe meglio prendere un po’ di campioni e fare la media su quelli invece del valore istantaneo.

1 Like

Ciao, scusami.
Volevo farlo ma non ero riuscito.

Ciao grazie per la risposta, il microfono è questo qui sotto:
GY-MAX4466 (https://www.amazon.it/gp/product/B07MY293KD/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&psc=1 )

questo restituisce un voltaggio da 2.4 a 5 v, puoi per favore dirmi dove sbaglio? Ora caricando il programma che vedi, un volta superato la soglia la luce che accendo con il relè rimane sempre accesa…

Accetto volentieri il tuo consiglio ma ti chiedo gentilmente un esempio pratico.

Grazie e buona giornata

Se non sbaglio quel microfono restituisce un valore attorno a 512 quando non c’è rumore.
Questo perché Arduino non può campionare tensioni positive, il trucco è aggiungere metà della tensione, circa 2.5V, al segnale amplificato in ingresso.
Se tu graficassi il segnale vedresti che il segnale oscillerà intorno al valore medio per cui a saturazione, quindi un suono fortissimo, il grafico farà su e giù tra zero e 1023.

Dal grafico devi decidere la soglia, che so, tipo 1000, quindi se il valore dell’ADC supera 1000 scatta la tua azione. Puoi anche decidere che la soglia sia sotto i 512, quindi che so, metti 50. In questo caso l’azione scatta se l’ADC ti restituisce un valore SOTTO i 50.

Spero di essere stato chiaro.

In rete trovi anche un microfono su basetta rossa molto economico che forse può fare al caso tuo.

Questo invece fornisce un valore zero senza suono e valori superiori per i suoni via via più forti. Ha il difetto di essere alquanto sordo, i suoni devono essere davvero forti, tipo il battito di mani.
Volendo ha anche un trimmer di regolazione della sensibilità poiché oltre al valore analogico del microfono te ne restituisce uno digitale on off che scatta al superare della soglia regolabile tramite il trimmer azzurro.
Questa

è una quida per quest’ultimo tipo di microfono che è molto grezzo.

Ma tu ne hai già uno più raffinato per cui prova con quello.

Ciao,
Ti ringrazio per la risposta. per quanto riguarda il micofono funziona come dici te: circa 512 quando non c’è rumore e poi man mano si alza io ho stimato la soglia intorno a 600/ 620 . Ho letto la guida, ma, non mi ha aiutato più di tanto…
Puoi gentilmente dare un occhio al mio programma e dirmi dove sbaglio?

grazie!

Ho trovato questo

e questo
http://mercury.pr.erau.edu/~houlahap/Arduino/Using%20Arduino%20to%20study%20sound%20v4.docx
Il secondo ha uno sketch che mi sembra fatto meglio poiché raccoglie più campioni come avevo detto io.

Ciao Enry1995, se colleghi Arduino nudo e crudo il problema, come già detto, sembrerebbe di natura software. Se invece, quanto da te dichiarato, succede con un qualche carico collegato ad Arduino il discorso cambia. Esistono sia sui portatili che sui fissi diversi tipi di porte USB con capacità di erogazione diverse. Se lo colleghi ad una USB2 potrai prelevare un massimo di 500mA. Se lo colleghi ad una USB3 il limite dovrebbe essere di 900mA. Solitamente le USB2 sono nere e le USB3 sono azzurre. Prova a verificare se le porte sul portatile dove funziona sono di un tipo diverso da quelle dove non funziona.

Ciao grazie per la risposta, dovrò stampare il programma e cercare di studiarlo perchè per le mie conoscenze va un pelino oltre :smile: . Ti chiedo se gentilmente puoi perdere 2 minuti per leggere il mio programma e dirmi dove sbaglio.

Grazie e buon lavoro.

Ciao,
conoscevo questa differenza tra usb, comunque sul portatile che sto usando ora funziona solo su una delle due usb3. non riesco a capire perchè, forse è quella che ho utilizzato per la prima volta con l’arduino e con la quale ho installato i driver… ( può essere??)

grazie mille e buona giornata

Il problema è che non sono davanti al mio PC dove ho l’IDE. Ad occhio il loop mi sembra un pelino contorto e non ci ho capito gran che, sarebbe da caricare nell’IDE per indentarlo bene.

la mia idea era:

  1. leggi microfono
  2. se il valore è maggiore di 620 somma 1 ad una variabile e leggi di nuovo il valore del microfono altrimenti porta la variabile a 0
  3. se è nuovamente superiore a 620 fai esattamente come sopra
  4. esattamente come sopra
  5. Poi c’è un altro if che fa si che se la variabile arriva a 3 accenda la luce per tot secondi dopo di che azzeri la variabile.

Per favore, quando puoi dacci un occhio così mi aiuti perchè non capisco dove sbaglio.

A questo punto ho il sospetto che la scheda non sia il massimo della qualità…
Problemi anche cambiando cavo usb?

Ho solo una USB che va bene sull’arduino ma se funziona su altri PC dubiti sia quella.
Ti dico la verità sarei tentato di acquistare un arduini originale rendendo questo. Ma prima volevo vedere se il progettino poteva funzionare

Non può funzionare così perché ti ricordo che hai a che fare con una oscillazione per cui il segnale scenderà sotto i 512 e poi risalirà, il tutto in dipendenza dalla frequenza di acquisizione che, per come hai scritto il codice, dipende da qual che fai dopo.
Ad esempio la stampa sulla seriale rallenta l’acquisizione.
Per cui , dopo che superi la soglia, può capitare che campioni mentre il segnale è più basso, anche più basso di 512 perché è l’altra parte dell’oscillazione.
Se non fosse un segnale oscillante potrebbe funzionare ma il suono lo è.

Invece potresti contare quante volte si supera la soglia, incrementando un contatore, ma in un intervallo di tempo misurato con millis.