Aangepaste 4×4 Boter-Kaas-Eieren Visitekaartje PCB – Ontwerp, Bouw en Code Handleiding
Overzicht
Deze tutorial begeleidt je bij het maken van een aangepaste, visitekaartje-grote PCB die fungeert als een 4×4 boter-kaas-eieren spel. De voorkant toont het EDISON SCIENCE CORNER logo, sociale-media iconen en een QR-code die linkt naar een YouTube-kanaal. Keer de kaart om om een volledig functionele spelcircuit te onthullen, aangedreven door een ATmega328, NeoPixel LEDs en tactiele schakelaars.
Onderdelen & Benodigdheden
| Item | Aantal |
|---|---|
| Microchip ATmega328P‑AU | 1 |
| NeoPixel RGB LED-strip (WS2812B) | 16 (4×4) |
| Tactiele schakelaars, bovenbediend | 16 |
| Aangepaste PCB (JLCPCB) | 1 |
| Arduino UNO (voor programmeren) | 1 |
| USB Micro‑Female | 1 |
| Condensators 22 pF (0805) | 2 |
| Condensators 100 nF (0805) | 2 |
| Weerstanden 1 kΩ (0805) | 3 |
| Weerstand 10 kΩ (0805) | 1 |
| 16 MHz Kristal | 1 |
| LEDs (SMD 0805) | 2 |
Nodige Tools & Machines
- Solderbout (standaard)
- Loodvrij soldeerdraad
- Soldeervloeistof
- Draadbrugjes set (5 cm, 10 stuks)
Apps & Online Diensten
- Arduino IDE
- EasyEDA – PCB ontwerpplatform
- JLCPCB – goedkope PCB fabricage (vanaf $2 voor 5 borden)
Stap 1: Ontwerp & Print de PCB
Met EasyEDA ontwierp ik een 89 mm × 50 mm bord (standaard visitekaartformaat) en routeerde een 4×4 boter-kaas-eieren matrix. Het schema gebruikt een ATmega328 als kern microcontroller en integreert 16 WS2812B LEDs en 16 tactiele schakelaars. Na het finaliseren van de layout, exporteerde ik de Gerber-bestanden en uploadde ze naar JLCPCB. Met een dikte van 0,8 mm en zwart bord, arrivere de afgeronde PCB na twee weken, voldoeend aan de verwachte kwaliteit voor hobbyprojecten.
Stap 2: Verzamel Onderdelen
Raadpleeg de bovenstaande onderdelenlijst. Alle delen zijn algemeen, goedkoop en verkrijgbaar bij elektronica distributeurs zoals Digi‑Key, Mouser of AliExpress.
Stap 3: Solderen
Begin met het solderen van de USB micro‑female connector, plaats daarna de ATmega328 en ondersteunende passive componenten. Vervolgens soldeer je de NeoPixel LED-strip en lijn je elke LED uit met de bijbehorende tactiele schakelaar. Soldeer alle 16 schakelaars zorgvuldig, met correcte oriëntatie. De volledige assemblage duurt ongeveer één uur voor een ervaren hobbyist.
Stap 4: Programmeren
Verbind het bord met een pc via USB. Upload de volgende sketch met de Arduino IDE:
De sketch initialiseert de 16-LED array, verwerkt toetsaanslagen van de 4×4 keypad matrix en implementeert een simpele win-detector. Speler 1 gebruikt groene LEDs, speler 2 blauwe LEDs. Bij een winst knippert het bord in de winnende kleur; als het bord vol zit zonder winnaar, knippert het rood.
Stap 5: Spelen & Genieten
Keer de kaart om om de spelkant te onthullen. Elke knopdruk licht de bijbehorende LED. Het spel volgt de klassieke boter-kaas-eieren regels maar met een 4×4 rooster en kleurindicaties. Geniet van een uniek, draagbaar spel dat ook als gespreksonderwerp dient op conferenties en netwerkevenementen.
Code
Hieronder staat de volledige Arduino sketch (C/C++) die in dit project gebruikt wordt. Deze omvat keypad-afhandeling, LED-besturing en win-logica.
#include <Keypad.h>
#include <FastLED.h>
#define LED_PIN 5
#define NUM_LEDS 16
#define LED_TYPE WS2812B
#define COLOR_ORDER GBR
#define BRIGHTNESS 30
CRGB leds[NUM_LEDS];
int player = 1;
char board[16] = {'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'};
char key;
int moveCount = 0;
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'*','0','#','D'}};
byte rowPins[ROWS] = {A0,A1,A2,A3};
byte colPins[COLS] = {A4,A5,2,3};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
LEDS.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
// Licht alle LEDs groen, dan blauw, om functionaliteit te bevestigen
for(int i=0;i<3;i++){
for(int j=0;j<NUM_LEDS;j++)
leds[j] = (i%2==0) ? CRGB::Green : CRGB::Blue;
FastLED.show();
delay(500);
}
FastLED.clear();
}
void loop(){
key = customKeypad.getKey();
if(key && player==1){
int idx = keyToIndex(key);
leds[idx] = CRGB::Green;
FastLED.show();
board[idx] = 'X';
if(checkWinner('X')){
announceWinner(1);
}
player = 2;
delay(1000);
}
if(key && player==2){
int idx = keyToIndex(key);
leds[idx] = CRGB::Blue;
FastLED.show();
board[idx] = 'O';
if(checkWinner('O')){
announceWinner(2);
}
player = 1;
moveCount++;
delay(1000);
}
if(moveCount==8){
announceDraw();
}
}
int keyToIndex(char k){
switch(k){
case '1': return 0;
case '2': return 1;
case '3': return 2;
case 'A': return 3;
case '4': return 4;
case '5': return 5;
case '6': return 6;
case 'B': return 7;
case '7': return 8;
case '8': return 9;
case '9': return 10;
case 'C': return 11;
case '*': return 12;
case '0': return 13;
case '#': return 14;
case 'D': return 15;
}
return -1;
}
bool checkWinner(char mark){
const int lines[10][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15},
{0,4,8,12},{1,5,9,13},{2,6,10,14},{3,7,11,15},
{0,5,10,15},{3,6,9,12}};
for(auto &line: lines){
if(board[line[0]]==mark && board[line[1]]==mark && board[line[2]]==mark && board[line[3]]==mark){
return true;
}
}
return false;
}
void announceWinner(int p){
CRGB color = (p==1) ? CRGB::Green : CRGB::Blue;
while(true){
for(int i=0;i<NUM_LEDS;i++) leds[i] = color;
FastLED.show();
delay(500);
FastLED.clear();
FastLED.show();
delay(500);
}
}
void announceDraw(){
while(true){
for(int i=0;i<NUM_LEDS;i++) leds[i] = CRGB::Red;
FastLED.show();
delay(1000);
FastLED.clear();
FastLED.show();
delay(500);
}
}
Schema's
Alle ontwerpbestanden, BOM en code zijn beschikbaar voor download.
Productieproces
- Bouw een real-time gyroscoop-spel met Arduino Nano & MPU-6050 sensor
- Meerpositie-temperatuursensorsysteem voor slimme thuisintegratie
- Bouw Je Eigen 37-LED Roulette-spel met Arduino Nano
- DIY Arduino USB Gaming Controller – Bouw Je Eigen High-Performance Gamepad
- Bouw een Touchscreen Boter-Kaas-en-Eieren Spel op Arduino Due
- MotionSense: Slimme inbraakdetectie met Arduino en ESP8266
- 3D-Printer Brandpreventie: Slimme Sensor Veiligheidssysteem
- Pixel Chaser: Interactieve één-tik LED-spel met Arduino Nano
- Arduino-gebaseerde Afstotende Magnetische Levitatie: Eenvoudige Schakeling & DIY Handleiding
- Geavanceerde Remote-gecontrolleerde Gripper Robot voor Precisiehantering
- CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie