Santa larm (7 / 9 steg)
Steg 7: kod
Jag sydde ihop följande kod för att få detta att fungera. Det är ett mish-mash av koden med sensorns närhet exempel som grund, med några enkla funktioner läggs till. Knappast elegant, men det fungerar tillräckligt bra.
Denna kod är ganska lättillgänglig för en nybörjare, det är faktiskt mycket lik en av koderna i Arduino nybörjare satser. Om du är intresserad av detta projekt och en bättre programmerare än mig, varför inte försöka förbättra det? Glöm inte att meddela oss på forumet om du gör!
(Obs: Jag använder det medföljande biblioteket för RGB-färgen sensorn och Arduino tråd biblioteket. Du kommer att behöva ladda ner dessa för att koden för att kompilera/ladda upp).
#include
#include
int Summer = 8.
int redled = 6;
float sinVal;
int toneVal;
Globala variabler
APDS9960 apds = APDS9960();
uint8_t proximity_data = 0;
void setup() {
pinMode(buzzer,OUTPUT);
pinMode(redled,OUTPUT);
Initiera serieporten
Serial.BEGIN(9600);
Serial.println();
Serial.println(F("---"));
Serial.println F ("APDS-9960 - ProximitySensor").
Serial.println(F("---"));
Initiera APDS-9960 (konfigurera I2C och ursprungliga värden)
om (apds.init()) {
Serial.println F ("APDS-9960 initiering komplett").
} annat {
Serial.println F ("något gick fel under APDS-9960 init!").
}
Justera närhet sensor känsligheten
om (! apds.setProximityGain(PGAIN_2X)) {
Serial.println F ("något gick fel försöker ställa in PGAIN").
}
Börja köra APDS-9960 Närhetssensor (utan avbrott)
om (apds.enableProximitySensor(false)) {
Serial.println F ("närhet sensor körs nu").
} annat {
Serial.println F ("något gick fel under sensorn init!").
}
digitalWrite (redled, låg);
}
void loop() {
Läsa värdet närhet
om (! apds.readProximity(proximity_data)) {
Serial.println ("fel vid läsning närhet värde");
} annat {
Serial.Print ("närhet:");
Serial.println(proximity_data);
}
Vänta 250 ms före nästa behandling
Delay(250);
om ((proximity_data) > 50) {
för (int x = 0; x < 180; x ++)
{sinVal = (sin(x*(3.1412/180)));
toneVal = 1000+(int(sinVal*1000));
tonen (8, toneVal, 100);
Delay(1);}
digitalWrite (redled, hög);
}
annat {
digitalWrite (Summer, låg);
digitalWrite (redled, låg);
}
om ((proximity_data) > 100) {
för (int x = 0; x < 180; x ++)
{sinVal = (sin(x*(3.1412/180)));
toneVal = 2000+(int(sinVal*1000));
tonen (8, toneVal, 100);
Delay(1);}
digitalWrite (redled, hög);}
annat {
digitalWrite (Summer, låg);
digitalWrite (redled, låg);
}
om ((proximity_data) > 250) {
för (int x = 0; x < 180; x ++)
{sinVal = (sin(x*(3.1412/180)));
toneVal = 3000+(int(sinVal*1000));
tonen (8, toneVal, 100);
Delay(1);}
digitalWrite (redled, hög);
}
annat {
digitalWrite (Summer, låg);
digitalWrite (redled, låg);
}
}