Étape 7: Code
J’ai bricolé le code suivant pour obtenir ce travail. C’est un méli-mélo de code à l’aide d’exemple de proximité de la sonde comme base, avec quelques simples fonctionnalités ajoutées. Peu élégant, mais il fonctionne assez bien.
Ce code est tout à fait accessible pour un débutant, en fait c’est très semblable à celle des codes dans nos kits de débutant Arduino. Si vous êtes intéressés par ce projet et un codeur mieux que moi, pourquoi ne pas essayer de l’améliorer ? N’oubliez pas de nous le faire savoir sur le forum si vous le faites !
(Note : J’utilise la bibliothèque incluse pour le capteur de couleur RVB et la bibliothèque de fils Arduino. Vous devrez télécharger ces pour le code à compiler/upload).
#include
#include
avertisseur sonore int = 8 ;
int redled = 6 ;
flotteur sinVal ;
int toneVal ;
Variables globales
Apds APDS9960 = APDS9960() ;
uint8_t proximity_data = 0 ;
void setup() {}
pinMode(buzzer,OUTPUT) ;
pinMode(redled,OUTPUT) ;
Initialiser le port série
Serial.Begin(9600) ;
Serial.println() ;
Serial.println(F("---")) ;
Serial.println (F (« APDS-9960 - ProximitySensor")) ;
Serial.println(F("---")) ;
Initialiser l’APDS-9960 (configurer I2C et valeurs initiales)
Si {(apds.init())
Serial.println (F "(APDS-9960 initialisation de complète")) ;
} else {}
Serial.println (F ("quelque chose s’est mal passé au cours de l’APDS-9960 init!")) ;
}
Régler le gain de capteur de proximité
Si (! apds.setProximityGain(PGAIN_2X)) {}
Serial.println (F ("quelque chose allait mal essayer de mettre en PGAIN")) ;
}
Commence à courir le capteur de proximité APDS-9960 (sans interruption)
Si {(apds.enableProximitySensor(false))
Serial.println (F (« proximité capteur fonctionne maintenant")) ;
} else {}
Serial.println (F ("quelque chose s’est mal passé au cours de l’initialisation du capteur!")) ;
}
digitalWrite (redled, basse) ;
}
void loop() {}
Lire la valeur de proximité
Si (! apds.readProximity(proximity_data)) {}
Serial.println ("erreur de lecture valeur de proximité") ;
} else {}
Serial.Print (« proximité: ") ;
Serial.println(proximity_data) ;
}
Attendre les 250 ms avant la prochaine lecture
Delay(250) ;
Si {((proximity_data) > 50)
pour (int x = 0; x < 180; x ++)
{sinVal = (sin(x*(3.1412/180))) ;
toneVal = 1000+(int(sinVal*1000)) ;
ton (8, toneVal, 100) ;
Delay(1);}
digitalWrite (redled, HIGH) ;
}
else {}
digitalWrite (sonnerie, faible) ;
digitalWrite (redled, basse) ;
}
Si {((proximity_data) > 100)
pour (int x = 0; x < 180; x ++)
{sinVal = (sin(x*(3.1412/180))) ;
toneVal = 2000+(int(sinVal*1000)) ;
ton (8, toneVal, 100) ;
Delay(1);}
digitalWrite (redled, HIGH);}
else {}
digitalWrite (sonnerie, faible) ;
digitalWrite (redled, basse) ;
}
Si {((proximity_data) > 250)
pour (int x = 0; x < 180; x ++)
{sinVal = (sin(x*(3.1412/180))) ;
toneVal = 3000+(int(sinVal*1000)) ;
ton (8, toneVal, 100) ;
Delay(1);}
digitalWrite (redled, HIGH) ;
}
else {}
digitalWrite (sonnerie, faible) ;
digitalWrite (redled, basse) ;
}
}