Stap 7: Code
Ik in elkaar geflanst de volgende code om dit werkend te krijgen. Het is een mish-mash van code met behulp van de sensor van de nabijheid voorbeeld als basis, met een aantal eenvoudige functies toegevoegd. Nauwelijks elegante, maar het werkt goed genoeg.
Deze code is vrij toegankelijk voor een beginner, in feite is het zeer gelijkaardig aan één van de codes in onze Arduino beginner kits. Als u geïnteresseerd in dit project en een betere coder dan ik bent, waarom niet proberen te verbeteren? Vergeet niet te laten weten op het forum als je dat doet!
(Opmerking: Ik ben met behulp van de meegeleverde bibliotheek voor de RGB-kleur-sensor en de Arduino draad bibliotheek. U moet deze om de code te compileren/upload downloaden).
#include
#include
int zoemer = 8;
int redled = 6;
float sinVal;
int toneVal;
Globale variabelen
APDS9960 apds = APDS9960();
uint8_t proximity_data = 0;
VOID Setup {}
pinMode(buzzer,OUTPUT);
pinMode(redled,OUTPUT);
Initialiseren van de seriële poort
Serial.begin(9600);
Serial.println();
Serial.println(F("---"));
Serial.println (F ("APDS-9960 - ProximitySensor"));
Serial.println(F("---"));
APDS-9960 initialiseren (configureren I2C en beginwaarden)
Als (apds.init()) {}
Serial.println (F ("APDS-9960 initialisatie compleet"));
} else {}
Serial.println (F ("Something went wrong tijdens APDS-9960 init!"));
}
De nabijheid sensor winst aanpassen
Als (! apds.setProximityGain(PGAIN_2X)) {}
Serial.println (F ("Something went wrong probeert in te stellen PGAIN"));
}
Begint te lopen van de APDS-9960 nabijheidssensor (geen interrupts)
Als (apds.enableProximitySensor(false)) {}
Serial.println (F ("Proximity sensor draait nu"));
} else {}
Serial.println (F ("Something went wrong tijdens sensor init!"));
}
digitalWrite (redled, laag);
}
void loop {}
Luiden naar de waarde van de nabijheid
Als (! apds.readProximity(proximity_data)) {}
Serial.println ("fout bij het lezen nabijheid waarde");
} else {}
Serial.Print ("nabijheid:");
Serial.println(proximity_data);
}
Wachten 250 ms vóór volgende lezing
delay(250);
Als ((proximity_data) > 50) {}
voor (int x = 0; x < 180; x ++)
{sinVal = (sin(x*(3.1412/180)));
toneVal = 1000+(int(sinVal*1000));
Toon (8, toneVal, 100);
delay(1);}
digitalWrite (redled, hoge);
}
else {}
digitalWrite (zoemer, laag);
digitalWrite (redled, laag);
}
Als ((proximity_data) > 100) {}
voor (int x = 0; x < 180; x ++)
{sinVal = (sin(x*(3.1412/180)));
toneVal = 2000+(int(sinVal*1000));
Toon (8, toneVal, 100);
delay(1);}
digitalWrite (redled, hoge);}
else {}
digitalWrite (zoemer, laag);
digitalWrite (redled, laag);
}
Als ((proximity_data) > 250) {}
voor (int x = 0; x < 180; x ++)
{sinVal = (sin(x*(3.1412/180)));
toneVal = 3000+(int(sinVal*1000));
Toon (8, toneVal, 100);
delay(1);}
digitalWrite (redled, hoge);
}
else {}
digitalWrite (zoemer, laag);
digitalWrite (redled, laag);
}
}