From 3a7a887ef1037a6fa80f7dbd7add48420e8449a5 Mon Sep 17 00:00:00 2001 From: Tropicananass Date: Thu, 7 Feb 2019 19:36:13 +0100 Subject: [PATCH] sync --- .clang_complete | 21 +- .gcc-flags.json | 6 +- .pioenvs/.sconsign.dblite | Bin 26341 -> 32876 bytes .pioenvs/do-not-modify-files-here.url | 3 + .pioenvs/micro/firmware.elf | Bin 0 -> 19084 bytes .pioenvs/micro/firmware.hex | 314 ++++++++++++++++++++++++ .pioenvs/structure.hash | 2 +- build.log | 335 +------------------------- src/main.cpp | 107 +++++--- src/{mainTest.cpp => main.cpp.bak0} | 0 src/main.cpp.bak1 | 48 ++++ 11 files changed, 470 insertions(+), 366 deletions(-) create mode 100644 .pioenvs/do-not-modify-files-here.url create mode 100755 .pioenvs/micro/firmware.elf create mode 100644 .pioenvs/micro/firmware.hex rename src/{mainTest.cpp => main.cpp.bak0} (100%) create mode 100644 src/main.cpp.bak1 diff --git a/.clang_complete b/.clang_complete index 399498c..6346075 100644 --- a/.clang_complete +++ b/.clang_complete @@ -1,19 +1,22 @@ -I/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino -I/home/nathan/.platformio/packages/framework-arduinoavr/variants/micro +-I/home/nathan/.platformio/lib/Adafruit MQTT Library_ID1092 +-I/home/nathan/.platformio/lib/ArduinoJson_ID64/src +-I/home/nathan/.platformio/lib/Encoder +-I/home/nathan/.platformio/lib/Encoder/utility +-I/home/nathan/.platformio/lib/Keypad_ID165/src -I/home/nathan/.platformio/lib/MIDI controller/src -I/home/nathan/.platformio/lib/MIDIUSB_ID1104/src --I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SoftwareSerial/src --I/home/nathan/.platformio/lib/ArduinoJson_ID64/src --I/home/nathan/.platformio/lib/Keypad_ID165/src +-I/home/nathan/.platformio/lib/Multiplexer_ID320 -I/home/nathan/.platformio/lib/PubSubClient_ID89/src --I/home/nathan/.platformio/lib/Tone_ID1420 -I/home/nathan/.platformio/lib/WifiManager_ID567 -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/EEPROM/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/HID/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SPI/src +-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SoftwareSerial/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/Wire/src --I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground --I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground/utility +-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_Circuit_Playground +-I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_Circuit_Playground/utility -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Bridge/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Esplora/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Ethernet/src @@ -37,9 +40,9 @@ -I/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed -I/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include -I/home/nathan/.platformio/packages/tool-unity --I/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/include --I/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/src --DPLATFORMIO=40000 +-I/home/nathan/Documents/PlatformIO/Projects/Midi/include +-I/home/nathan/Documents/PlatformIO/Projects/Midi/src +-DPLATFORMIO=30604 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR diff --git a/.gcc-flags.json b/.gcc-flags.json index 2f57e73..756db33 100644 --- a/.gcc-flags.json +++ b/.gcc-flags.json @@ -1,8 +1,8 @@ { "execPath": "/home/nathan/.platformio/packages/toolchain-atmelavr/bin/avr-g++", - "gccDefaultCFlags": "-fsyntax-only -std=gnu11 -fno-fat-lto-objects -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=40000 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__", - "gccDefaultCppFlags": "-fsyntax-only -fno-exceptions -fno-threadsafe-statics -fpermissive -std=gnu++11 -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=40000 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__", + "gccDefaultCFlags": "-fsyntax-only -std=gnu11 -fno-fat-lto-objects -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=30604 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__", + "gccDefaultCppFlags": "-fsyntax-only -fno-exceptions -fno-threadsafe-statics -fpermissive -std=gnu++11 -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=30604 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__", "gccErrorLimit": 15, - "gccIncludePaths": "/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino,/home/nathan/.platformio/packages/framework-arduinoavr/variants/micro,/home/nathan/.platformio/lib/MIDI controller/src,/home/nathan/.platformio/lib/MIDIUSB_ID1104/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SoftwareSerial/src,/home/nathan/.platformio/lib/ArduinoJson_ID64/src,/home/nathan/.platformio/lib/Keypad_ID165/src,/home/nathan/.platformio/lib/PubSubClient_ID89/src,/home/nathan/.platformio/lib/Tone_ID1420,/home/nathan/.platformio/lib/WifiManager_ID567,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/EEPROM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/HID/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SPI/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/Wire/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Bridge/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Esplora/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Ethernet/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/GSM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Keyboard/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/LiquidCrystal/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Mouse/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/RobotIRremote/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Control/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Motor/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SD/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Servo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SpacebrewYun/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Stepper/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/TFT/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Temboo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/WiFi/src,/home/nathan/.platformio/packages/toolchain-atmelavr/avr/include,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include,/home/nathan/.platformio/packages/tool-unity,/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/include,/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/src", + "gccIncludePaths": "/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino,/home/nathan/.platformio/packages/framework-arduinoavr/variants/micro,/home/nathan/.platformio/lib/Adafruit MQTT Library_ID1092,/home/nathan/.platformio/lib/ArduinoJson_ID64/src,/home/nathan/.platformio/lib/Encoder,/home/nathan/.platformio/lib/Encoder/utility,/home/nathan/.platformio/lib/Keypad_ID165/src,/home/nathan/.platformio/lib/MIDI controller/src,/home/nathan/.platformio/lib/MIDIUSB_ID1104/src,/home/nathan/.platformio/lib/Multiplexer_ID320,/home/nathan/.platformio/lib/PubSubClient_ID89/src,/home/nathan/.platformio/lib/WifiManager_ID567,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/EEPROM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/HID/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SPI/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SoftwareSerial/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/Wire/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_Circuit_Playground,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_Circuit_Playground/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Bridge/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Esplora/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Ethernet/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/GSM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Keyboard/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/LiquidCrystal/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Mouse/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/RobotIRremote/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Control/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Motor/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SD/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Servo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SpacebrewYun/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Stepper/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/TFT/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Temboo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/WiFi/src,/home/nathan/.platformio/packages/toolchain-atmelavr/avr/include,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include,/home/nathan/.platformio/packages/tool-unity,/home/nathan/Documents/PlatformIO/Projects/Midi/include,/home/nathan/Documents/PlatformIO/Projects/Midi/src", "gccSuppressWarnings": false } diff --git a/.pioenvs/.sconsign.dblite b/.pioenvs/.sconsign.dblite index 2de27f70c015e7285ee6b7f924cadaa70249bab0..d219124bec74ca6af76e8fb800b5ddb5d7e7ff59 100644 GIT binary patch literal 32876 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 literal 26341 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 vy;FeqQIsKi80AuEv^gc=!xpv{&ka Arduino Micro HARDWARE: ATMEGA32U4 16MHz 2.50KB RAM (28KB Flash) Library Dependency Finder -> http://bit.ly/configure-pio-ldf LDF MODES: FINDER(chain) COMPATIBILITY(soft) -Collected 32 compatible libraries +Collected 33 compatible libraries Scanning dependencies... -Dependency Graph -|-- 3.1.0 #e895a51 -| |-- 1.0.3 -| |-- 1.0 +No dependencies Compiling .pioenvs/micro/src/main.cpp.o -Compiling .pioenvs/micro/src/mainTest.cpp.o -Compiling .pioenvs/micro/lib103/MIDIUSB_ID1104/MIDIUSB.cpp.o -Compiling .pioenvs/micro/libe75/SoftwareSerial/SoftwareSerial.cpp.o -src/mainTest.cpp:21:13: warning: 'Analog' is deprecated -Analog potentiometers[] = { -^ -src/main.cpp:35:13: warning: 'Analog' is deprecated -Analog potentiometers[] = { -^ -In file included from lib/MIDI_controller/src/./MIDI_Controller/MIDI_Controller_Class.h:4:0, -from lib/MIDI_controller/src/MIDI_Controller.h:10, -from src/mainTest.cpp:3: -lib/MIDI_controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h: In member function 'virtual void USBMIDI_Interface::sendImpl(uint8_t, uint8_t, uint8_t, uint8_t)': -lib/MIDI_controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:36: warning: narrowing conversion of '(((int)m) >> 4)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] -midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; -^ -lib/MIDI_controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:44: warning: narrowing conversion of '(int)(m | c)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] -midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; -^ -In file included from lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:5:0, -from lib/MIDI_controller/src/./MIDI_Outputs/Analog.h:8, -from lib/MIDI_controller/src/MIDI_Controller.h:14, -from src/mainTest.cpp:3: -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] -virtual int digitalRead(pin_t pin){}; -^ -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] -virtual analog_t analogRead(pin_t pin){}; -^ -In file included from lib/MIDI_controller/src/./MIDI_Controller/MIDI_Controller_Class.h:4:0, -from lib/MIDI_controller/src/MIDI_Controller.h:10, -from src/main.cpp:2: -lib/MIDI_controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h: In member function 'virtual void USBMIDI_Interface::sendImpl(uint8_t, uint8_t, uint8_t, uint8_t)': -lib/MIDI_controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:36: warning: narrowing conversion of '(((int)m) >> 4)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] -midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; -^ -lib/MIDI_controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:44: warning: narrowing conversion of '(int)(m | c)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] -midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; -^ -In file included from lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:5:0, -from lib/MIDI_controller/src/./MIDI_Outputs/Analog.h:8, -from lib/MIDI_controller/src/MIDI_Controller.h:14, -from src/main.cpp:2: -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] -virtual int digitalRead(pin_t pin){}; -^ -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] -virtual analog_t analogRead(pin_t pin){}; -^ -In file included from lib/MIDI_controller/src/MIDI_Controller.h:33:0, -from src/mainTest.cpp:3: -lib/MIDI_controller/src/./ExtendedInputOutput/AnalogMultiplex.h: In constructor 'AnalogMultiplex::AnalogMultiplex(pin_t, std::initializer_list)': -lib/MIDI_controller/src/./ExtendedInputOutput/AnalogMultiplex.h:45:32: warning: 'AnalogMultiplex::nb_addresses' will be initialized after [-Wreorder] -const size_t nb_addressPins, nb_addresses; -^ -lib/MIDI_controller/src/./ExtendedInputOutput/AnalogMultiplex.h:24:50: warning: base 'ExtendedIOElement' [-Wreorder] -ExtendedIOElement(1 << addressPins.size()) -^ -lib/MIDI_controller/src/./ExtendedInputOutput/AnalogMultiplex.h:22:3: warning: when initialized here [-Wreorder] -AnalogMultiplex(pin_t analogPin, std::initializer_list addressPins) -^ -In file included from lib/MIDI_controller/src/MIDI_Controller.h:33:0, -from src/main.cpp:2: -lib/MIDI_controller/src/./ExtendedInputOutput/AnalogMultiplex.h: In constructor 'AnalogMultiplex::AnalogMultiplex(pin_t, std::initializer_list)': -lib/MIDI_controller/src/./ExtendedInputOutput/AnalogMultiplex.h:45:32: warning: 'AnalogMultiplex::nb_addresses' will be initialized after [-Wreorder] -const size_t nb_addressPins, nb_addresses; -^ -lib/MIDI_controller/src/./ExtendedInputOutput/AnalogMultiplex.h:24:50: warning: base 'ExtendedIOElement' [-Wreorder] -ExtendedIOElement(1 << addressPins.size()) -^ -lib/MIDI_controller/src/./ExtendedInputOutput/AnalogMultiplex.h:22:3: warning: when initialized here [-Wreorder] -AnalogMultiplex(pin_t analogPin, std::initializer_list addressPins) -^ -In file included from lib/MIDI_controller/src/MIDI_Controller.h:28:0, -from src/mainTest.cpp:3: -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:57:111: required from here -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] -const unsigned long baud; -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] -SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} -^ -src/main.cpp: In function 'void setup()': -src/main.cpp:50:51: error: call of overloaded 'pinMode(uint8_t, int)' is ambiguous -pinMode(static_cast(shift_clock), OUTPUT); -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] -SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} -^ -In file included from src/main.cpp:1:0: -/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino/Arduino.h:133:6: note: candidate: void pinMode(uint8_t, uint8_t) -void pinMode(uint8_t, uint8_t); -^ -In file included from lib/MIDI_controller/src/./MIDI_Outputs/Analog.h:8:0, -from lib/MIDI_controller/src/MIDI_Controller.h:14, -from src/main.cpp:2: -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:13:13: note: candidate: void ExtIO::pinMode(int, uint8_t) -extern void pinMode(int pin, uint8_t mode); -^ -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:12:13: note: candidate: void ExtIO::pinMode(pin_t, uint8_t) -extern void pinMode(pin_t pin, uint8_t mode); -^ -src/main.cpp:51:28: error: call of overloaded 'pinMode(const uint8_t&, int)' is ambiguous -pinMode(shift_data, OUTPUT); -^ -In file included from src/main.cpp:1:0: -/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino/Arduino.h:133:6: note: candidate: void pinMode(uint8_t, uint8_t) -void pinMode(uint8_t, uint8_t); -^ -In file included from lib/MIDI_controller/src/./MIDI_Outputs/Analog.h:8:0, -from lib/MIDI_controller/src/MIDI_Controller.h:14, -from src/main.cpp:2: -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:13:13: note: candidate: void ExtIO::pinMode(int, uint8_t) -extern void pinMode(int pin, uint8_t mode); -^ -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:12:13: note: candidate: void ExtIO::pinMode(pin_t, uint8_t) -extern void pinMode(pin_t pin, uint8_t mode); -^ -src/main.cpp:52:29: error: call of overloaded 'pinMode(const uint8_t&, int)' is ambiguous -pinMode(shift_latch, OUTPUT); -^ -In file included from src/main.cpp:1:0: -/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino/Arduino.h:133:6: note: candidate: void pinMode(uint8_t, uint8_t) -void pinMode(uint8_t, uint8_t); -^ -In file included from lib/MIDI_controller/src/./MIDI_Outputs/Analog.h:8:0, -from lib/MIDI_controller/src/MIDI_Controller.h:14, -from src/main.cpp:2: -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:13:13: note: candidate: void ExtIO::pinMode(int, uint8_t) -extern void pinMode(int pin, uint8_t mode); -^ -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:12:13: note: candidate: void ExtIO::pinMode(pin_t, uint8_t) -extern void pinMode(pin_t pin, uint8_t mode); -^ -src/main.cpp:56:32: error: call of overloaded 'pinMode(const uint8_t&, int)' is ambiguous -pinMode(keyboard_in[i], INPUT); -^ -In file included from src/main.cpp:1:0: -/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino/Arduino.h:133:6: note: candidate: void pinMode(uint8_t, uint8_t) -void pinMode(uint8_t, uint8_t); -^ -In file included from lib/MIDI_controller/src/./MIDI_Outputs/Analog.h:8:0, -from lib/MIDI_controller/src/MIDI_Controller.h:14, -from src/main.cpp:2: -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:13:13: note: candidate: void ExtIO::pinMode(int, uint8_t) -extern void pinMode(int pin, uint8_t mode); -^ -lib/MIDI_controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:12:13: note: candidate: void ExtIO::pinMode(pin_t, uint8_t) -extern void pinMode(pin_t pin, uint8_t mode); -^ -src/main.cpp: In function 'void loop()': -src/main.cpp:91:6: error: 'val' was not declared in this scope -if (val[2] >= 500) { -^ -src/main.cpp: In function 'void scanLineOut(int)': -src/main.cpp:118:15: error: 'latchPin' was not declared in this scope -digitalWrite(latchPin, LOW); -^ -src/main.cpp:121:12: error: 'dataPin' was not declared in this scope -shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000); //right sr -^ -src/main.cpp:121:21: error: 'clockPin' was not declared in this scope -shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000); //right sr -^ -src/main.cpp:124:12: error: 'dataPin' was not declared in this scope -shiftOut(dataPin, clockPin, MSBFIRST, bits[colNum-8]); //right sr -^ -src/main.cpp:124:21: error: 'clockPin' was not declared in this scope -shiftOut(dataPin, clockPin, MSBFIRST, bits[colNum-8]); //right sr -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = Serial_]': -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:85:82: required from here -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] -const unsigned long baud; -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] -SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] -SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} -^ -In file included from lib/MIDI_controller/src/MIDI_Controller.h:28:0, -from src/main.cpp:2: -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:57:111: required from here -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] -const unsigned long baud; -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] -SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] -SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:101:110: required from here -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] -const unsigned long baud; -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] -SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] -SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = Serial_]': -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:85:82: required from here -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] -const unsigned long baud; -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] -SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] -SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} -^ -In file included from lib/MIDI_controller/src/MIDI_Controller.h:29:0, -from src/mainTest.cpp:3: -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:70:121: required from here -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] -const unsigned long baud; -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] -SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] -SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:101:110: required from here -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] -const unsigned long baud; -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] -SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] -SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = Serial_]': -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:98:86: required from here -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] -const unsigned long baud; -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] -SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] -SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} -^ -In file included from lib/MIDI_controller/src/MIDI_Controller.h:29:0, -from src/main.cpp:2: -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:70:121: required from here -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] -const unsigned long baud; -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] -SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] -SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:107:120: required from here -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] -const unsigned long baud; -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] -SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] -SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = Serial_]': -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:98:86: required from here -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] -const unsigned long baud; -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] -SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] -SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:107:120: required from here -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] -const unsigned long baud; -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] -SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} -^ -lib/MIDI_controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] -SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} -^ -In file included from lib/MIDI_controller/src/MIDI_Controller.h:33:0, -from src/main.cpp:2: -lib/MIDI_controller/src/./ExtendedInputOutput/AnalogMultiplex.h: In instantiation of 'AnalogMultiplex::AnalogMultiplex(pin_t, const pin_t (&)[N]) [with unsigned int N = 5u; pin_t = unsigned char]': -src/main.cpp:27:46: required from here -lib/MIDI_controller/src/./ExtendedInputOutput/AnalogMultiplex.h:45:32: warning: 'AnalogMultiplex::nb_addresses' will be initialized after [-Wreorder] -const size_t nb_addressPins, nb_addresses; -^ -lib/MIDI_controller/src/./ExtendedInputOutput/AnalogMultiplex.h:18:33: warning: base 'ExtendedIOElement' [-Wreorder] -ExtendedIOElement(1 << N) -^ -lib/MIDI_controller/src/./ExtendedInputOutput/AnalogMultiplex.h:16:3: warning: when initialized here [-Wreorder] -AnalogMultiplex(pin_t analogPin, const pin_t (&addressPins)[N]) -^ -*** [.pioenvs/micro/src/main.cpp.o] Error 1 -============================================================================= [ERROR] Took 1.51 seconds ============================================================================= +Linking .pioenvs/micro/firmware.elf +Building .pioenvs/micro/firmware.hex +Checking size .pioenvs/micro/firmware.elf +Memory Usage -> http://bit.ly/pio-memory-usage +DATA: [= ] 8.6% (used 219 bytes from 2560 bytes) +PROGRAM: [== ] 17.3% (used 4962 bytes from 28672 bytes) +==================================================================================== [SUCCESS] Took 1.62 seconds ==================================================================================== diff --git a/src/main.cpp b/src/main.cpp index f21b98c..945b304 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,5 @@ #include -#include +// #include #define s * 1000 @@ -24,21 +24,22 @@ const uint8_t keyboard_in[KEYBOARD_INSIZE]{4, 5, 6, 7, 8, 9}; /* Components */ /* GPIO (I2C) */ /* Multiplexer */ -AnalogMultiplex multiplexer(mux_sig, mux_addr); +// AnalogMultiplex multiplexer(mux_sig, mux_addr); /* ShiftRegister (OUT) */ -ShiftRegisterOut shiftRegister(shift_data, shift_clock, shift_latch, MSBFIRST, SHIFT_OUTPUTSIZE); +// ShiftRegisterOut shiftRegister(shift_data, shift_clock, shift_latch, MSBFIRST, SHIFT_OUTPUTSIZE); /* keyboard (IN) */ /* Midi links */ //USBDebugMIDI_Interface midiInterface(115200); -Analog potentiometers[] = { - {multiplexer.pin(4), MIDI_CC::Channel_Volume, 5}, - {multiplexer.pin(5), MIDI_CC::Channel_Volume, 6}, - {multiplexer.pin(6), MIDI_CC::Channel_Volume, 7}, - {multiplexer.pin(7), MIDI_CC::Channel_Volume, 8} -}; +// Analog potentiometers[] = { +// {multiplexer.pin(4), MIDI_CC::Channel_Volume, 5}, +// {multiplexer.pin(5), MIDI_CC::Channel_Volume, 6}, +// {multiplexer.pin(6), MIDI_CC::Channel_Volume, 7}, +// {multiplexer.pin(7), MIDI_CC::Channel_Volume, 8} +// }; +bool ref[4*4]; void setup() { Serial.begin(115200); @@ -46,8 +47,7 @@ void setup() { delay(.5 s); } - - pinMode(static_cast(shift_clock), OUTPUT); + pinMode(shift_clock, OUTPUT); pinMode(shift_data, OUTPUT); pinMode(shift_latch, OUTPUT); pinMode(2, OUTPUT); @@ -55,8 +55,15 @@ void setup() { for (size_t i = 0; i < KEYBOARD_INSIZE; i++) { pinMode(keyboard_in[i], INPUT); } + + for (size_t i = 0; i < 4*4; i++) { + ref[i] = false; + } } +void scanLineOut(int colNum); + + void loop() { // long start = millis(); // for (size_t i = 0; i < 4; i++) { @@ -88,12 +95,56 @@ void loop() { // } else { // digitalWrite(0, LOW); // } - if (val[2] >= 500) { - digitalWrite(1, HIGH); - } else { - digitalWrite(1, LOW); + + for (size_t i = 0; i < 4; i++) { + scanLineOut(i); + uint8_t rowValue[KEYBOARD_INSIZE]; + bool pressed = false; + for (size_t j = 0; j < 4; j++) { + if ((rowValue[i] = digitalRead(keyboard_in[j + 2])) == HIGH) { + if (!ref[j * 4 + i]) { + Serial.print("key "); + Serial.print(j * 4 + i); + Serial.print(" pressed (received on pin "); + Serial.print(keyboard_in[j + 2]); + Serial.print(" & emmited on pin "); + Serial.print(i); + Serial.println(")"); + ref[j * 4 + i] = true; + } + } else { + + ref[j * 4 + i] = false; + } + ref[j * 4 + i] = true; + pressed |= rowValue[i]; + } + if (pressed) { + digitalWrite(2, HIGH); + } else { + digitalWrite(2, LOW); + } } + + // for (uint8_t i = 0; i < 8; i++) { + // byte bitsToSend = 0b00000001 << i; + // digitalWrite(shift_latch, LOW); + // shiftOut(shift_data, shift_clock, MSBFIRST, bitsToSend); + // digitalWrite(shift_latch, HIGH); + // Serial.print(" "); + // Serial.print(bitsToSend, BIN); + // Serial.println(" HIGH"); + // delay(1 s); + // //bitWrite(bitsToSend, i, LOW); + // digitalWrite(shift_latch, LOW); + // shiftOut(shift_data, shift_clock, MSBFIRST, 0b00000000); + // digitalWrite(shift_latch, HIGH); + // Serial.print(i); + // Serial.println(" LOW"); + // delay(1 s); + // } + // analogWrite(9, val[0] * 256 / 1024); @@ -105,25 +156,25 @@ void loop() { } byte bits[] = { 0b00000001, - B00000010, - B00000100, - B00001000, - B00010000, - B00100000, - B01000000, - B10000000 + 0b00000010, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b10000000 }; void scanLineOut(int colNum) { - digitalWrite(latchPin, LOW); + digitalWrite(shift_latch, LOW); if(0 <= colNum && colNum <= 7) { - shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000); //right sr - shiftOut(dataPin, clockPin, MSBFIRST, bits[colNum]); //left sr + shiftOut(shift_data, shift_clock, MSBFIRST, 0b00000000); //right sr + shiftOut(shift_data, shift_clock, MSBFIRST, bits[colNum]); //left sr } else { - shiftOut(dataPin, clockPin, MSBFIRST, bits[colNum-8]); //right sr - shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000); //left sr + shiftOut(shift_data, shift_clock, MSBFIRST, bits[colNum-8]); //right sr + shiftOut(shift_data, shift_clock, MSBFIRST, 0b00000000); //left sr } - digitalWrite(latchPin, HIGH); + digitalWrite(shift_latch, HIGH); } diff --git a/src/mainTest.cpp b/src/main.cpp.bak0 similarity index 100% rename from src/mainTest.cpp rename to src/main.cpp.bak0 diff --git a/src/main.cpp.bak1 b/src/main.cpp.bak1 new file mode 100644 index 0000000..0fd319f --- /dev/null +++ b/src/main.cpp.bak1 @@ -0,0 +1,48 @@ +#include +//**************************************************************// +// Name : shiftOutCode, Hello World +// Author : Carlyn Maw,Tom Igoe, David A. Mellis +// Date : 25 Oct, 2006 +// Modified: 23 Mar 2010 +// Version : 2.0 +// Notes : Code for using a 74HC595 Shift Register // +// : to count from 0 to 255 +//**************************************************************** + +//Pin connected to ST_CP of 74HC595 +int latchPin = 16; +//Pin connected to SH_CP of 74HC595 +int clockPin = 1; +////Pin connected to DS of 74HC595 +int dataPin = 14; + + + +void setup() { + //set pins to output so you can control the shift register + pinMode(latchPin, OUTPUT); + pinMode(clockPin, OUTPUT); + pinMode(dataPin, OUTPUT); + + Serial.begin(115200); +} + +void loop() { + // count from 0 to 255 and display the number + // on the LEDs + for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) { + // take the latchPin low so + // the LEDs don't change while you're sending in bits: + digitalWrite(latchPin, LOW); + // shift out the bits: + shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay); + + //take the latch pin high so the LEDs will light up: + digitalWrite(latchPin, HIGH); + // pause before next value: + // delay(1000); + Serial.print("Number : "); + Serial.println(numberToDisplay, BIN); + delay(1000); + } +}