Elsőnek leszögezném most kóstoltam bele az elektronika világába, és sajnos máris problémába ütköztem. Egy MSGEQ7 IC-ből szeretném kinyerni az adatokat, de valami nem jó.
Értem, hogy a kód mit miért csinál és utána is olvastam, hogy valóban így kellene működni, de folyton 0 értékeket kapok, bár valahogy sikerült egyszer 1023at is na de abszolút nem a valós adatokat. A kapcsolás e kép szerint történt annyi a különbség, hogy nem volt 200K ellenálásom, így 2 75K és 1 50K ellenálásal oldottam meg sorba kötve, kerámia kondenzátort használtam (nem tudom ez lehet-e esetleg probléma), illetve az 5V-ot nem az Arduinotól vettem, ha külön PC tápegység használatával, (mert Arduinoval 3,5V-ot mértem valamiért az 5V helyett, mellesleg kipróbáltam 2féle Arduinoval nehogy az legyen a probléma) és ezt a kódot használtam:
Kód: Egész kijelölése
// MSGEQ7 Equalizer IC Arduino peldaprogram
int strobe = 4; // STROBE lab Pin4-re kotve
int reset = 5; // RESET lab Pin5-re kotve
int spektrum[7]; // a mert audiospektrumot eltarolo tomb
int MSGEQ7 = 5; // MSGEQ7 analog 5 pin-re kotve (A5)
int csatorna;
void setup()
{
Serial.begin(115200); // 115200 baud sebessegu soros kommunikacio letrehozasa
pinMode(reset, OUTPUT); // RESET lab kimenet
pinMode(strobe, OUTPUT); // STROBE lab kimenet
digitalWrite(reset,LOW);
digitalWrite(strobe,HIGH);
}
void MSGEQ7meres()
{
digitalWrite(reset, HIGH);
digitalWrite(reset, LOW);
for(csatorna=0; csatorna < 7; csatorna++)
{
digitalWrite(strobe,LOW); // strobe pin alacsony-kovetkezo frekv.savra valtas
delayMicroseconds(30);
spektrum[csatorna] = analogRead(MSGEQ7); // mert ertek eltarolasa a tombbe
digitalWrite(strobe,HIGH);
}
}
void loop()
{
MSGEQ7meres();
for (csatorna = 0; csatorna < 7; csatorna++)
{
Serial.print(spektrum[csatorna]);
Serial.print(" ");
}
Serial.println();