Buongiorno,
Ho un arduino che funziona (permettendomi di caricare dei software e di eseguirli correttamente )solo se collegato a due pc portatili ma non sul pc fisso.
Ho provado a rinstallare i driver della seriale ma l' ide di arduino non carica il programma, oltretutto se carico un software dal portatile (testato e funzionante) e provo ad usare il fisso solo come alimentatore per accendere l'arduio non funziona...
Qualcuno sa aiutarmi?
Il PC è w10, esattamente come il portatile. L'hardware non penso interessi particolarmente... Ho notato che anche sui portatili funziona solo su determinate usb . Ma, anche sul fisso ho provato varie USB e non è cambiato nulla. Mi è capitato una volta sul fisso, che rilevasse l'arduino come una tastiera seriale. Ma ho risolto bloccando l'aggiornamento automatico dei driver, e rinstallando nuovamente quelli per l'arduino, che tra l'altro sono gli stessi che ho messo sugli altri portatili comunque i problemi che ti ho descritto persistano.
Metti pure il link al prodotto.
Se quello che vedo su Amazon, ha come chip di comunicazione USB il CH340
di cui devi installare i driver. CH340 Drivers for Windows, Mac and Linux
Arduino originale ha il chip AtMega16U2 per la gestione USB
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 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.
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.
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.
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?
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 . Ti chiedo se gentilmente puoi perdere 2 minuti per leggere il mio programma e dirmi dove sbaglio.