//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); } |
NICTA ed1 >