Juichmeter

Gemaakt door Tinyfrog001 en Magnificenthawk737

Wat is een juichmeter?

Juichmeter

Wij kregen de opdracht om een juichmeter te programmeren met een Arduino en dan te installeren aan een paar knoppen. Als een van die knoppen ingedrukt wordt gaat er een bericht naar een programma, die slaat de ingedrukte knop op. Vervolgens is er ook een website waarop deze opgeslagen data te zien is.

Hoe het werkt

Arduino

Een Arduino is een kleine mini-computer waarop kleine programma’s gedraaid kunnen worden. Een Arduino kan ook via allemaal bedrading verbonden worden met apparaten zoals knoppen of lampen, dat is hieronder ook te zien. Vervolgens is de Arduino ook verbonden met een computer zodat de computer iets kan uitvoeren zodra er op een knop wordt gedrukt.

“De Doos”
De ingewanden van “De Doos”

Registeren van een ingedrukte knop

Als er op een knop gedrukt wordt moet dit worden opgeslagen zodat de verzamelde data later teruggekeken kan worden. Deze date wordt opgeslagen in een sqlite database, een sqlite database in een database in een normaal bestand (e.g. database.sqlite). Voor de interactie met deze database hebben wij een “node module” gebruikt genaamd prisma. Met prisma kan een schema gemaakt worden zoals hieronder:


// Dit is de " node module" die wij gebruiken om met deze database te interacteren
generator client {
  provider = "prisma-client-js"
}

// De locatie van de sqlite database
datasource db {
  provider = "sqlite"
  url      = "file:./main.db"
}

// De dag waarop de les heeft plaatsgevonden
model Day {
  // Een unieke ID voor deze dag
  id Int @unique @id @default(autoincrement())
  date DateTime @unique
  lessons Lesson[]
}

// De les waarop gestemd is
model Lesson {
  // Een unieke ID voor deze les
  id Int @unique @id @default(autoincrement())
  // Het lesuur voor deze les
  hour Int
  // De stemmen die zijn uitgebracht voor deze les
  votes Vote[]|
  // De connectie met de dag waarop de les heeft plaatsgevonden
  day Day @relation(fields: [dayId], references: [id])
  dayId Int
}

// Een stem op een les
model Vote {|
  // Een unieke ID voor deze stem
  id Int @unique @id @default(autoincrement())
  // Wat er gestemd is (1: slecht, 2: matig, 3: goed) 
  vote Int
  // De connectie met de les waarop gestemd is
  lesson Lesson @relation(fields: [lessonId], references: [id])
  lessonId Int
}