My code is as follows:
int latchPin = 8;
int clockPin = 12;
int dataPin = 11;
byte data = 0;
// pin for the button switch
int button = 7;
// value to check state of button switch
int pressed = 0;
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(button, INPUT);
Serial.begin(9600);
randomSeed(analogRead(0));
}
void shiftWrite(int desiredPin, boolean desiredState) {
bitWrite(data,desiredPin,desiredState);
digitalWrite(latchpin, HIGH);
shiftOut(dataPin, clockPin, data);
digitalWrite(latchpin, LOW);
}
void buildUpTension() {
// light LEDs from left to right and back to build up tension
// while waiting for the dice to be thrown
// left to right
for (int i=0; i<=19; i++) {
if (i!=0) {
digitalWrite(i-1, LOW);
}
digitalWrite(i, HIGH);
delay(100);
}
// right to left
for (int i=19; i>=0; i--) {
if (i!=19) {
digitalWrite(i+1, LOW);
}
digitalWrite(i, HIGH);
delay(100);
}
}
void showNumber(int number) {
shiftWrite(0, HIGH);
if (number >= 2) {
shiftWrite(1, HIGH);
}
if (number >= 3) {
shiftWrite(2, HIGH);
}
if (number >= 4) {
shiftWrite(3, HIGH);
}
if (number >= 5) {
shiftWrite(4, HIGH);
}
if (number >= 6) {
shiftWrite(5, HIGH);
}
if (number >= 7) {
shiftWrite(6, HIGH);
}
if (number >= 8) {
shiftWrite(7, HIGH);
}
if (number >= 9) {
shiftWrite(8, HIGH);
}
if (number >= 10) {
shiftWrite(9, HIGH);
}
if (number >= 11) {
shiftWrite(10, HIGH);
}
if (number >= 12) {
shiftWrite(11, HIGH);
}
if (number >= 13) {
shiftWrite(12, HIGH);
}
if (number >= 14) {
shiftWrite(13, HIGH);
}
if (number >= 15) {
shiftWrite(14, HIGH);
}
if (number >=16) {
shiftWrite(15, HIGH);
}
if (number >= 17) {
shiftWrite(16, HIGH);
}
if (number >= 18) {
shiftWrite(17, HIGH);
}
if (number >= 19) {
shiftWrite(18, HIGH);
}
if (number == 20) {
digitalWrite(19, HIGH);
}
}
int throwDice() {
// get a random number in the range [1,6]
int randNumber = random(1,21);
return randNumber;
}
void setAllLEDs(int value) {
for (int i=0; i<=19; i++) {
digitalWrite(i, value);
}
}
void loop() {
pressed = digitalRead(button);
if (pressed == HIGH) {
// remove previous number
setAllLEDs(LOW);
buildUpTension();
int thrownNumber = throwDice();
showNumber(thrownNumber);
}
}
And I'm getting the following error messages:
Arduino: 1.8.1 (Windows 10), Board: "Arduino/Genuino Uno"
C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Eva\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0X2341_0X0043 -ide-version=10801 -build-path C:\Users\Eva\AppData\Local\Temp\arduino_build_731308 -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Eva\Documents\Arduino\random_number_composite\_3p_composite\_3p_composite.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Eva\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0X2341_0X0043 -ide-version=10801 -build-path C:\Users\Eva\AppData\Local\Temp\arduino_build_731308 -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Eva\Documents\Arduino\random_number_composite\_3p_composite\_3p_composite.ino
Using board 'uno' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\Eva\AppData\Local\Temp\arduino_build_731308\sketch\_3p_composite.ino.cpp" -o "nul"
Generating function prototypes...
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\Eva\AppData\Local\Temp\arduino_build_731308\sketch\_3p_composite.ino.cpp" -o "C:\Users\Eva\AppData\Local\Temp\arduino_build_731308\preproc\ctags_target_for_gcc_minus_e.cpp"
"C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\Eva\AppData\Local\Temp\arduino_build_731308\preproc\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\Eva\AppData\Local\Temp\arduino_build_731308\sketch\_3p_composite.ino.cpp" -o "C:\Users\Eva\AppData\Local\Temp\arduino_build_731308\sketch\_3p_composite.ino.cpp.o"
C:\Users\Eva\Documents\Arduino\random_number_composite\_3p_composite\_3p_composite.ino: In function 'void shiftWrite(int, boolean)':
_3p_composite:26: error: 'latchpin' was not declared in this scope
digitalWrite(latchpin, HIGH);
^
_3p_composite:27: error: too few arguments to function 'void shiftOut(uint8_t, uint8_t, uint8_t, uint8_t)'
shiftOut(dataPin, clockPin, data);
^
In file included from C:\Users\Eva\AppData\Local\Temp\arduino_build_731308\sketch\_3p_composite.ino.cpp:1:0:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:147:6: note: declared here
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val);
^
exit status 1
'latchpin' was not declared in this scope
I have read a few other posts from people getting error messages about variables not being declared in this scope, but I still can't seem to find where the problem is in my own code. If anyone knows what I'm doing wrong, or knows where I can find an explanation, I would really appreciate it!