Stap 2: Prototyping
Nemen van het ohoilette concept, ik geïdentificeerd die ik een basketbal hoepel die had een zichtbaar score weergegeven wilde, gecontroleerd door een Arduino en getriggerd door een afstandssensor gericht op het net.
Schaalvergroting van het afzonderlijk toegewezen LED-segmenten op een quad alfanumeriek display met een rugzak IC2 van Adafruit maakte de codering eenvoudiger en keek scherper dan om het even wat dat ik vanaf nul maken wil. Ik wilde echt een Trinket gebruiken in plaats van de Micro, maar ik kon krijgen mijn schets klein genoeg om op de Trinket. Ongeacht, maakte inkrimping naar de Micro de mogelijkheid van het past allemaal binnen een half-sized breadboard een realiteit. Ik ging bijna met de ultrasone afstandssensor totdat ik zag de scherpe digitale sensor vermeld in mijn lijst van onderdelen. Het is veel kleiner en krijgt de fundamentele taak van de opsporing van de motie efficiënt gedaan.
Ik heb gemaakt het breadboard schematische boven met Fritzing, maar hier zijn de verbindingen die ik heb gebruikt:
- Arduino
- 5V > 5v spoor
- GND > GND spoor
- A0 > afstandssensor (uit)
- 2/SDA > alpha SDA
- 3/SCL > alpha SCL
- Display Sensor
- UIT > adruino A0
- VIN > 5v spoor
- GND > GND spoor
- Alfanumeriek Display
- Vi2C > 5v spoor
- VCC > 5v spoor
- GND > GND spoor
- SDA > adrunio 2/SDA
- SCL > adruino 3/SCL
Code-Wise, heb ik een integer genoemd Score die altijd op de alpha weergave wordt weergegeven. Elke keer als de afstandssensor is struikelde, wordt 1 toegevoegd aan de telling van de integer, waardoor het bijwerken van de score op het display. Hier is de schets:
//include libraries#include #include "Adafruit_LEDBackpack.h" #include "Adafruit_GFX.h" //create Adafruit Alphanumeric Display object Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); //define integer int score = 0; void setup() { //set sensor pin to INPUT pinMode(A0, INPUT); //set BAUD rate Serial.begin(9600); //start display alpha4.begin(0x70); //write zeros to all positions alpha4.writeDigitAscii(0, '0'); alpha4.writeDigitAscii(1, '0'); alpha4.writeDigitAscii(2, '0'); alpha4.writeDigitAscii(3, '0'); //display newly written values alpha4.writeDisplay();} void loop() { //add 1 to the score if sensor voltage is LOW if (analogRead(A0) < 200) { score++; //write score to display data alpha4.writeDigitAscii(3, (score%10) + '0'); alpha4.writeDigitAscii(2, (score%100/10) + '0'); alpha4.writeDigitAscii(1, (score%1000/100) + '0'); alpha4.writeDigitAscii(0, (score/1000) + '0'); //push display data to display alpha4.writeDisplay(); //wait 1.5 sec to eliminate phantom reads delay(1500); }}
Nadat alles goed getest, gesoldeerd ik de onderdelen naar een half-sized breadboard voor montage aan het bord.