Arduino Sketch Code

Full sketches from the Programming & Hardware Interfaces coursework.

LCD Timer Sweep

#include <LiquidCrystal.h>

const int rs = 7, e = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
LiquidCrystal lcd(rs, e, d4, d5, d6, d7);

unsigned long starttime = millis();
int time = 0;

void setup() {
  lcd.begin(16,2);
}

void loop() {
  for(int i = 0; i<31; i++){
    int etime = (millis()-starttime);
    if(i<15){
      lcd.setCursor(i, 0);
    }else{
      lcd.setCursor(i-15, 1);
    }
    lcd.print((etime-time)/500);
    delay(500);
    lcd.clear();
  }
  time+=8000;
}

RGB Fade Loop

int blu = 3;
int grn = 5;
int red = 6;
int colors[3] = {3,5,6};

void setup() {
  pinMode(red, OUTPUT);
  pinMode(grn, OUTPUT);
  pinMode(blu, OUTPUT);
}

void loop() {
  analogWrite(red,0);
  analogWrite(grn,0);
  analogWrite(blu,0);

  for(int i=0; i<3; i++){
    for(int j = 0; j<=255; j++){
      analogWrite(colors[i], j/2);
      if(i==2){
        analogWrite(colors[0], j/4);
      }else{
        analogWrite(colors[i+1], j/4);
      }
      delay(5);
    }
    for(int j = 255; j>=0; j--){
      analogWrite(colors[i], j/2);
      if(i==2){
        analogWrite(colors[0], j/4);
      }else{
        analogWrite(colors[i+1], j/4);
      }
      delay(5);
    }
  }
}

Oscillating Blink Rate

int LED = 8;
void setup()
{
  pinMode(LED, OUTPUT);
}

void loop()
{
  for(int i=1; i<151; i+=5){
    digitalWrite(LED, HIGH);
    delay(i);
    digitalWrite(LED, LOW);
    delay(i);    
  }

  for(int j=151; j>1; j-=5){
    digitalWrite(LED, HIGH);
    delay(j);
    digitalWrite(LED, LOW);
    delay(j);    
  }
}

Button-Controlled Stoplight

int RED = 6;
int YLW = 5;
int GRN = 4;
int BUTTON = 2;

void setup() {
  Serial.begin(9600);
  pinMode(BUTTON, INPUT_PULLUP);
  for(int i = 4; i<7; i++){
    pinMode(i, OUTPUT);
  }
}

int count = 7;
bool state = 0;
bool iState = 0;
bool toggle = 0;

void loop() {
  state = !digitalRead(BUTTON);
  if((state ==1 && state != iState)){
    count += 1;
    delay(50);
    toggle = !toggle;
  }
  if(count==4 || count > 6){
    count = 4;
    digitalWrite(RED, 1);
    digitalWrite(YLW, 0);
    digitalWrite(GRN, 0);
  }else if(count == 5){
    digitalWrite(RED, 0);
    digitalWrite(YLW, 1);
    digitalWrite(GRN, 0);
  }else if(count == 6){
    digitalWrite(RED, 0);
    digitalWrite(YLW, 0);
    digitalWrite(GRN, 1);
  }
  iState = state;
  Serial.println(count);
  delay(20);
}

Light-Activated Alarm

int LED = 9;
int buzz = 12;

void setup() {
  pinMode(A0, INPUT);
  pinMode(LED, OUTPUT);
  pinMode(buzz, OUTPUT);
  Serial.begin(9600);
}

int light;
bool on = 0;

void loop() {
  light = analogRead(A0);
  int wait = map(light, 0, 1023, 750, 20);
  on=!on;
  if(light<120){
    digitalWrite(LED, 0);
    digitalWrite(buzz, 0);
  }else{ 
    digitalWrite(LED, on);
    digitalWrite(buzz, on);
    delay(wait);
  }
  Serial.println(light);
}

Nightlight

int LED = 9;
void setup() {
  pinMode(A0, INPUT);
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
}

int thresh = 200;
int light;

void loop() {
  light = analogRead(A0);
  Serial.println(light);
  delay(100);
  if(light>thresh){
    digitalWrite(LED, 0);
  }else{
    digitalWrite(LED, 1);
  }
}

True Toggle Switch

int BUTTON = 2;
int led = 6;

void setup() {
  Serial.begin(9600);
  pinMode(BUTTON, INPUT_PULLUP);
  pinMode(led, OUTPUT);
}

int count = 0;
bool state = 0;
bool iState = 0;
bool toggle = 0;

void loop() {
  state = !digitalRead(BUTTON);
  if((state ==1 && state != iState)){
    count += 1;
    delay(50);
    toggle = !toggle;
  }
  digitalWrite(led, toggle);
  iState = state;
  Serial.println(count);
  delay(20);
}

Timer Reaction Game

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

int buttonL = 2;
int buttonR = 3;
int ledR = 6;
int ledL = 5;
int correct;
float total = 0;

unsigned long start = 0;
float duration = 0;

void setup() {
  lcd.begin(16, 2);
  lcd.print("Hello Stopwatch!");
  pinMode(buttonL, INPUT_PULLUP);
  pinMode(buttonR, INPUT_PULLUP);
  pinMode(ledL, OUTPUT);
  pinMode(ledR, OUTPUT);
}

bool checkButton(int button){
  bool state = !digitalRead(button);
  if (state){
    delay(30);
  }
  return state;
}

void await(const char* message1, const char* message2){
  delay(500);
  digitalWrite(ledR,0);
  digitalWrite(ledL,0);
  clearlcd();
  lcd.setCursor(0,0);
  lcd.print(message1);
  lcd.setCursor(0,1);
  lcd.print(message2);
  while (true){
    if(checkButton(buttonL) || checkButton(buttonR)){
      break;
    }
    delay(20);
  }
}

float react_timer(int correct, unsigned long start){
  while(!checkButton(correct)){
    delay(20);
  }
  unsigned long react = millis()-start;
  float reaction = react/1000.0;
  return reaction;
}

void loop() {
  total = 0;
  for(int i = 0;i<5;i++){
    int delayTime = random(500, 5000);
    int light = random(ledL, ledR+1);
    if(light == ledL){
      correct = buttonL;
    }else{
      correct = buttonR;
    }

    clearlcd();
    lcd.print("Get Ready");
    delay(delayTime);

    clearlcd();
    lcd.print("Now!");
    digitalWrite(light, HIGH);
    start = millis();

    duration = react_timer(correct, start);
    total+= duration;
    char dura[16];
    dtostrf(duration, 6, 3, dura);

    await("Reaction", dura);
  }
  float avg = total/5;
  char avgs[16];
  dtostrf(avg, 6, 3, avgs);
  await("Average: ", avgs);
  await("Press to Play","");
}

void clearlcd() {
  lcd.setCursor(0, 0);
  lcd.print("                ");
  lcd.setCursor(0, 1);
  lcd.print("                ");
  lcd.setCursor(0, 0);
}
← Back to Writeups