Microwave oven simulator

Microwave oven simulator

Code for Arduino Nano

// Arduino Nano with 7 segment LED
//
// 15th October 2018
//
// This version counts up to 9
// Rotary encoder on Pins 2, 3 and GND not used in this sketch
// Solenoid for bell on Pin 8
// Motor on Pin 13
// Start button on Pin 10
//
// http://www.buxtronix.net/2011/10/rotary-encoders-done-properly.html

#include

Rotary rotary = Rotary(2, 3);

int segmentPins[]={6, 7, 9, 11, 12, 5, 4};
int buzzerPin=8;
int buttonPin=10;
int motorPin=13;

int counter = 0;

byte digits[10][8]={
{1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 0, 0, 0, 0, 0},
{1, 1, 0, 1, 1, 0, 1, 0},
{1, 1, 1, 1, 0, 0, 1, 0},
{0, 1, 1, 0, 0, 1, 1, 0},
{1, 0, 1, 1, 0, 1, 1, 0},
{1, 0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 0, 1, 1, 0}
};

void setup(){
Serial.begin(57600);
attachInterrupt(0, rotate, CHANGE);
attachInterrupt(1, rotate, CHANGE);
for (int i=0; i<8; i++){ pinMode(segmentPins[i], OUTPUT); } pinMode(buzzerPin, OUTPUT); pinMode(motorPin, OUTPUT); pinMode(buttonPin, INPUT); digitalWrite(motorPin, LOW); digitalWrite(buzzerPin, LOW); updateDisplay(0); } void loop() { if (digitalRead(buttonPin) == HIGH) { static int value; for (int i=0; i<10; i++) {updateDisplay(i);delay(1000);} motor(1000); digitalWrite(motorPin, LOW); delay(10000); bell(100); updateDisplay(0); } } void bell (int ding){ digitalWrite(buzzerPin, HIGH); delay(ding); digitalWrite(buzzerPin, LOW); } void rotate(){ unsigned char result = rotary.process(); if (result == DIR_CW) { counter++; if (counter > 9)
{counter = 9;
}
Serial.println(counter);
} else if (result == DIR_CCW) {
counter–;
if (counter < 0) {counter = 0; } Serial.println(counter); } } void motor(int duration){ digitalWrite(motorPin, HIGH); delay(duration); digitalWrite(motorPin, LOW); delay(10); } void updateDisplay(int value){ setSegments(value);delay(5); } void setSegments(int n){ for (int i=0; i<8; i++) {digitalWrite(segmentPins[i], ! digits[n][i]);} }