#include <Adafruit_NeoPixel.h>
#include <Wire.h>
#include "RTClib.h"
#define PIN 6 // Pinnen vi bruker til Neopixlene
#define NUMPIXELS 77 // Antall neopixler på en hel sirkel
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
RTC_DS1307 rtc;
struct timePlan {
byte ukedag; // Mandag = 1 --> fredag = 5
String startTid; // (tt:mm) f.eks. "08:10"
byte varighet; // (minutt)
byte fag; // 0 = Ingenting
// 1 = Friminutt
// 2 = El- kretser og nettverk
// 3 = Energi og styresystemer
// 4 = Norsk
// 5 = Engelsk
// 6 = Matte
// 7 = Naturfag
// 10 = Gym
};
timePlan plan[40];
void fyllPlan() {
// Mandag
plan[0] = {1, "08:10", 45, 2};
plan[1] = {1, "08:55", 45, 3};
plan[2] = {1, "09:40", 20, 1};
plan[3] = {1, "10:00", 90, 4};
plan[4] = {1, "11:30", 30, 1};
plan[5] = {1, "12:00", 90, 10};
plan[6] = {1, "13:30", 10, 1};
plan[7] = {1, "13:40", 90, 5};
// Tirsdag
plan[8] = {2, "08:10", 90, 6};
plan[9] = {2, "09:40", 20, 1};
plan[10] = {2, "10:00", 90, 3};
plan[11] = {2, "11:30", 30, 1};
plan[12] = {2, "12:00", 90, 3};
plan[13] = {2, "13:30", 10, 1};
plan[14] = {2, "13:40", 45, 3};
// Onsdag
plan[15] = {3, "08:10", 90, 6};
plan[16] = {3, "09:40", 20, 1};
plan[17] = {3, "10:00", 45, 6};
plan[18] = {3, "10:45", 90, 4};
// Torsdag
plan[19] = {4, "08:10", 90, 2};
plan[20] = {4, "09:40", 20, 1};
plan[21] = {4, "10:00", 90, 2};
plan[22] = {4, "11:30", 30, 1};
plan[23] = {4, "12:00", 45, 2};
plan[24] = {4, "12:45", 45, 5};
plan[25] = {4, "13:30", 10, 1};
plan[26] = {4, "13:40", 90, 2};
plan[27] = {4, "08:10", 90, 2};
// Fredag
plan[28] = {5, "08:55", 45, 2};
plan[29] = {5, "09:40", 20, 1};
plan[30] = {5, "10:00", 90, 3};
plan[31] = {5, "11:30", 30, 1};
plan[32] = {5, "12:00", 90, 3};
plan[33] = {5, "13:30", 10, 1};
plan[34] = {5, "13:40", 90, 7};
}
// ****** DEMOFUNKSJON! ******
void klokke(int tim, int min, int sek){
int minuttsiden = tim * 60 + min; // Antall minutter siden kl. 12 eller 00
int sekunditimen = min * 60 + sek; // Antall sekunder siden sist hele time
// Sett timeviser
int timePixel = map(minuttsiden, 0, 719, 0, NUMPIXELS - 1); //60min x 12tim = 720min
strip.setPixelColor(timePixel, strip.Color(0, 255, 0)); // Grønn pixel som viser timehånden
// Sett minuttviser
int minuttPixel = map(sekunditimen, 0, 3599, 0, NUMPIXELS - 1);
strip.setPixelColor(minuttPixel, strip.Color(255, 0, 0)); // Rød pixel som viser minutthånden
}
// ****** DEMOFUNKSJON! ******
void setup() {
Serial.begin(115200);
strip.begin();
strip.show(); // Setter alle pixlene til 'AV'
if (!rtc.begin()) {
Serial.println("Finner ikke klokken!");
while (1);
}
if (!rtc.isrunning()) {
Serial.println("Klokken er feil!");
}
fyllPlan(); // Fyller timeplanen inni timePLan.h
}
void loop() {
DateTime now = rtc.now();
int timer = now.hour() % 12; // skifter fra 24 times visning til 12
int minutt = now.minute();
int sekund = now.second();
strip.clear();
klokke(timer, minutt, sekund); //Kjører klokkefunksjonen som er rett over void setup() Bare for demo!
Serial.print("Klokken er: ");
Serial.print(timer);
Serial.print(":");
Serial.println(minutt);
delay(500);
strip.show();
}