Om te beginnen is dit niet mijn eigen ontwerp of project maar heb ik dat hier gevonden. Alle eer gaat dus uit naar deze persoon.
Ik heb volgens de gegevens die ik daar gevonden heb eerst even een proefopstelling gemaakt met een Arduino Uno omdat dit gewoon makkelijker werkt. Ik heb het ook geüpload naar een Pro Mini die je er uiteindelijk voor gebruikt en dat werkt ook goed.
Qua onderdelen is er maar erg weinig nodig.
1x Arduino Pro Mini of kloon
9x 1/8 watt weerstand 680 Ohm
1x zenerdiode 1 watt 6,2 volt bijvoorbeeld 1N4735A
Een stukje veroboard of ander experimenteerbordje
Soldeerapparaat
Soldeer
Klein kastje. Wie een 3D-printer heeft maakt het zelf. (ABS of PetG)
Epoxihars of bijvoorbeeld siliconen om de boel waterdicht te maken.
Stuk aansluitkabel
En niet te vergeten voldoende kennis om er überhaupt aan te beginnen. Als je niet weet hoe je een Arduino moet programmeren stop dan maar of ga je eerst daarin verdiepen.
Hieronder wat foto's van de proefopstelling. Dit is uiteraard vele malen groter dan het uiteindelijke eindresultaat. Dat heb ik nog niet gemaakt, dus kan ik nog niet hier tonen. Maar op de eerder genoemde website van de oorspronkelijke bedenker staan wel wat foto's.
Voor de proefopstelling heb ik om de versnellingen te simuleren een potmeter als spanningsdeler gemonteerd die als ingang dient op de Arduino. De waardes die hier gebruikt zijn, zijn voor een 1000 K-model. Maar de waardes zijn eenvoudig in het programma (sketch) aan te passen naar iedere andere waarde en is daarom eigenlijk toepasbaar voor iedere motor die een signaal afgeeft tussen 0 en 5 volt voor de diverse versnellingen.
De Cijfer led is in werkelijkheid helderder en beter leesbaar dan hier op de foto's. Voor het uiteindelijke ontwerp kun je natuurlijk voor andere kleuren kiezen en een andere/grotere grootte voor het cijfer.
Eerste versnelling: Tweede versnelling Derde, vierde en vijfde versnelling geen foto's, beeld is uiteraard hetzelfde met andere waardes.
Zesde versnelling Neutraal Dit is alles dat het hart van de indicator maakt. Het schema.
De sketch.
Code: Selecteer alles
// 7 segment LED pin connections
//
// --3--
// 7 4
// --2--
// 9 6
// --8--
// 5
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
void loop() {
int I;
for (I=0;I<5;I++)
{
circle();
}
int ReadVal;
for (;;) // Infinite loop
{
// Average from 20 readings to remove any noise issues
ReadVal=0;
for (I=0;I<20;I++)
{
ReadVal=ReadVal+analogRead(A0);
}
ReadVal=ReadVal/20;
// Display appropriate digit
if (ReadVal<329) // 1.39V <1.61V
{
one();
}
else if (ReadVal>=329 && ReadVal<448) // 1.82V >1.61V <2.19V
{
two();
}
else if (ReadVal>=448 && ReadVal<591) // 2.55V >2.19V <2.89V
{
three();
}
else if (ReadVal>=591 && ReadVal<747) // 3.22V >2.89V <3.65V
{
four();
}
else if (ReadVal>=747 && ReadVal<878) // 4.07V >3.65V <4.29V
{
five();
}
else if (ReadVal>=878 && ReadVal<968) // 4.51V >4.29V <4.73V
{
six();
}
else if (ReadVal>=968) // 4.95V >4.73V
{
zero();
}
}
}
void circle(){
digitalWrite(3, HIGH);
delay(100);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(4, LOW);
digitalWrite(6, HIGH);
delay(100);
digitalWrite(6, LOW);
digitalWrite(8, HIGH);
delay(100);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
delay(100);
digitalWrite(9, LOW);
digitalWrite(7, HIGH);
delay(100);
digitalWrite(7, LOW);
}
void DP_On(){
digitalWrite(5, HIGH);
}
void DP_Off(){
digitalWrite(5, LOW);
}
void blank(){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
void zero(){
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
void one(){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
void two(){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
void three(){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
}
void four(){
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
void five(){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
}
void six(){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
void eight(){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}