/* Button Blink Henlo When button is pressed on the Henlo44 board, blink and stuff. created 19 Mar 2022 by Zachary Hwang Based on some example code in the public domain: https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink */ const int button = 2; // pin PA2 on ATtiny44a const int led = 3; // pin PA3 on ATtiny44a // Morse Code timing setup /* The Morse code rules for signaling are: a dot lasts for one second a dash last for three seconds the space between dots and dashes that are part of the same letter is one second the space between different letters is three seconds the space between different words is seven seconds */ const int unit = 75; // base time unit for morse code, smaller is faster const int dot = unit; const int dash = unit * 3; const int space = unit; const int char_space = unit * 3; const int word_space = unit * 7; int buttonState = 0; // variable for button push checking void setup() { // initialize digital pin "led" as an output: pinMode(led, OUTPUT); // initialize digital pin "button" as an input: pinMode(button, INPUT); } void loop() { // read button push state buttonState = digitalRead(button); if (buttonState == LOW) { /* s(); o(); s(); */ h(); e(); n(); l(); o(); _(); w(); o(); r(); l(); d(); _(); } else { digitalWrite(led, LOW); } } // morse code letter functions // "_" is function name used for spaces in between words. Every char already ends with a char_space of 3 time units. void _() { delay(word_space - char_space); } void d() { digitalWrite(led, HIGH); delay(dash); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(char_space); } void e() { digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(char_space); } void h() { digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(char_space); } void l() { digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dash); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(char_space); } void n() { digitalWrite(led, HIGH); delay(dash); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(char_space); } void o() { digitalWrite(led, HIGH); delay(dash); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dash); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dash); digitalWrite(led, LOW); delay(char_space); } void r() { digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dash); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(char_space); } void s() { digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(char_space); } void w() { digitalWrite(led, HIGH); delay(dot); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dash); digitalWrite(led, LOW); delay(space); digitalWrite(led, HIGH); delay(dash); digitalWrite(led, LOW); delay(char_space); } // Code functions for more letters later... this is enough for "henlo world" for now /* Auto flash code digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(500); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(500); // wait for a second */