Download button on the bottom.
This is a program we created for the LED strip display course.
#include <Adafruit_NeoPixel.h> #define LED_COUNT 20 #define StripPin A2 #define HallEffectSensorPin 6 #define HallEffectGNDPin 5 #define HallEffectVCCPin 4 int StartSeconds = 20; int StartMinutes = 10; int StartHours = 1; int SecondsArrow; int MinutesArrow; int HoursArrow; int ArrowPosition; int HallSensorPastState = LOW; int HallSensorRead; int TimeForOneRotation = 1; unsigned long RPMTimer = millis(); Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_COUNT, StripPin, NEO_GRB + NEO_KHZ800); int Color[3] = {255, 100, 150}; int SecondsColor[3] = {255, 0, 0}; int MinutesColor[3] = {0, 255, 0}; int HoursColor[3] = {0, 0, 255}; void setup(){ pinMode(HallEffectSensorPin, INPUT); pinMode(HallEffectGNDPin, OUTPUT); pinMode(HallEffectVCCPin, OUTPUT); digitalWrite(5, LOW); digitalWrite(HallEffectVCCPin, HIGH); leds.begin(); leds.setPixelColor(19, Color[0], Color[1], Color[2]); } void loop(){ RPMUpdate(); ClearLedsWithoutTheLastOne(); ArrowPosition = StateFrom60(); SecondsArrow = ((int) floor(( millis() / 1000) + StartSeconds) % 60); MinutesArrow = ((int) floor(( millis() / 60000) + StartMinutes) % 60); HoursArrow = ((int) floor(( millis() / 3600000) + StartHours) % 12) * 5; if (ArrowPosition == SecondsArrow){ for (int i = 0; i < LED_COUNT - 3; i ++){ leds.setPixelColor(i, SecondsColor[0], SecondsColor[1], SecondsColor[2]); } } if (ArrowPosition == MinutesArrow){ for (int i = 0; i < LED_COUNT - 6; i ++){ leds.setPixelColor(i, MinutesColor[0], MinutesColor[1], MinutesColor[2]); } } if (ArrowPosition == HoursArrow){ for (int i = 0; i < LED_COUNT - 10; i ++){ leds.setPixelColor(i, HoursColor[0], HoursColor[1], HoursColor[2]); } } if (ArrowPosition % 5 == 0){ leds.setPixelColor(18, Color[0], Color[1], Color[2]); leds.setPixelColor(17, Color[0], Color[1], Color[2]); } leds.show(); } void RPMUpdate(){ HallSensorRead = digitalRead(HallEffectSensorPin); if(HallSensorRead != HallSensorPastState){ if(HallSensorRead == HIGH){ TimeForOneRotation = millis() - RPMTimer; RPMTimer = millis(); HallSensorPastState = HIGH; } else{ HallSensorPastState = LOW; } } } void ClearLedsWithoutTheLastOne(){ for(int i = 0; i < LED_COUNT - 1; i ++){leds.setPixelColor(i, 0);} } int StateFrom60(){ return (int)floor(((millis() - RPMTimer) * 60) / TimeForOneRotation) % 60; }
- #3749
- 13 Sep 2025