NICTA ed1 Demo
//Dr Pusey's NICTA Board Demo Program
//This code is deliberately not commented - it's your job to figure out how it works!
//To upload this code to the NICTA Board, make sure you select the correct Comm Port
//Change the board type to "Duemilanove or Diecimila"
// it's important to include this library so we can use the LCD display
#include <LiquidCrystal.h>
// set initial parameters and declare variables
LiquidCrystal lcd(6, 8, 2, 3, 4, 5);
byte data = 0;
int i=1;
int lightsense = 0;
int tempsense = 0;
int lbutton=1;
int rbutton=1;
int delayTime = 50;
double potValue;
char lightString[5];
char potString[5];
char tempString[5];
void setup() {
pinMode(12, OUTPUT); //SR Data
pinMode(10, OUTPUT); //SR Clock
pinMode(11, OUTPUT); //SR Latch
// set up NICTA BOARD PINS
pinMode(7, OUTPUT); //LCD RW
pinMode(9, OUTPUT); //PIEZO BUZZER
pinMode(13, OUTPUT); //LED
pinMode(14, INPUT); //Left Button
digitalWrite(14, HIGH);
pinMode(15, INPUT); //Right Button
digitalWrite(15, HIGH);
tone(9, 2000, 300);
delay(200);
tone(9, 3000, 200);
delay(200);
tone(9, 4000, 300);
lcd.begin(16, 2);
lcd.print("Hello STEM CLUB!");
}
void loop() {
//This loop changes the location of the LED marker (moving Light) from left to right and back again.
//During each itteration, the function "processDisplay" is activated.
//processDisplay is where all of the other stuff happens.
int index;
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
for(index = 0; index <= 7; index++)
{
shiftWrite(index, HIGH); // turn LED on
delay(delayTime); // pause to slow down the sequence
shiftWrite(index, LOW); // turn LED off
processDisplay();
}
for(index = 6; index >= 1; index--)
{
shiftWrite(index, HIGH); // turn LED on
delay(delayTime); // pause to slow down the sequence
shiftWrite(index, LOW); // turn LED off
processDisplay();
}
}
void processDisplay()
{
lbutton = digitalRead(14);
rbutton = digitalRead(15);
potValue = analogRead(3);
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
lightsense = analogRead(7);
tempsense = (0.25 * analogRead(6) - 20.50);
sprintf(tempString,"%02d%cC", tempsense,223);
lcd.setCursor(5, 1);
lcd.print(tempString);
lcd.setCursor(11, 1);
lcd.print(5-potValue*0.004883);
lcd.setCursor(15, 1);
lcd.print("V");
digitalWrite(13, lbutton);
if (lbutton==0)
{
tone(9, lightsense*50, 100);
}
if (rbutton==0)
{
tone(9, 10000-potValue*10, 100);
}
}
//This bit of code writes the current state of the LEDs to the board
void shiftWrite(int desiredPin, boolean desiredState)
{
bitWrite(data,desiredPin,desiredState);
shiftOut(12, 10, MSBFIRST, data);
digitalWrite(11, HIGH);
digitalWrite(11, LOW);
}