Code is not being upload toa Arduino nano. Giving following error
Arduino: 1.8.13 (Windows 7), TD: 1.53, Board: "Arduino Nano, ATmega328P (Old Bootloader)"
Sketch uses 18990 bytes (61%) of program storage space. Maximum is 30720 bytes.
Global variables use 939 bytes (45%) of dynamic memory, leaving 1109 bytes for local variables. Maximum is 2048 bytes.
An error occurred while uploading the sketch
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
From following code
#include <Adafruit_SSD1306.h> // ok sketch PIN 6 7 8 ARE FREE NOW
#include <TimerOne.h>
#include <EEPROM.h>
#include <Encoder.h>
#include <MIDI.h>
#include <Keypad.h>
const byte ROWS = 6; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16},
{17,18,19,20},
{21,22,23,24}
};
byte rowPins[ROWS] = {8,9,10,11,12,A0}; //connect to the row pinouts of the kpd
byte colPins[COLS] = {4,5,6,7}; //connect to the column pinouts of the kpd
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
String msg;
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
// #define LED_PIN1 7 // Tempo LED
// #define SYNC_OUTPUT_PIN 6 // Audio Sync Digital Pin
// #define SYNC_OUTPUT_PIN2 8 // 2nd Audio Sync Pin
#define CLOCKS_PER_BEAT 24 // MIDI Clock Ticks
#define AUDIO_SYNC 12 // Audio Sync Ticks
#define AUDIO_SYNC2 12 // 2nd Audio Sync Ticks
#define MINIMUM_BPM 20
#define MAXIMUM_BPM 300
#define BLINK_TIME 4 // LED blink time
unsigned long Mark_A = 0;
unsigned long Mark_B = 0;
unsigned long Gap = 0;
byte Patch = 50;
byte STOP_CUT = 0;
byte SHIFT_UP = 0;
byte SHIFT_DOWN = 0;
volatile int blinkCount = 0,
blinkCount2 = 0,
AudioSyncCount = 0,
AudioSyncCount2 = 0;
long intervalMicroSeconds,
bpm,
audio_sync2;
boolean playing = false,
sync_editing = false,
display_update = false;
Encoder myEnc(2, 3); // Rotary Encoder Pin 2,3
MIDI_CREATE_DEFAULT_INSTANCE();
void sendClockPulse() { // -----------------------SEND CLOCK PULSE
MIDI.sendRealTime(midi::Clock); // sending midi clock
if (playing) {
blinkCount = (blinkCount + 1) % CLOCKS_PER_BEAT;
blinkCount2 = (blinkCount2 + 1) % (CLOCKS_PER_BEAT / 2);
AudioSyncCount = (AudioSyncCount + 1) % AUDIO_SYNC;
AudioSyncCount2 = (AudioSyncCount2 + 1) % audio_sync2;
if (AudioSyncCount == 0) { /* digitalWrite(SYNC_OUTPUT_PIN, HIGH); */ }
else { if (AudioSyncCount == 1) { /* digitalWrite(SYNC_OUTPUT_PIN, LOW); */ } }
if (AudioSyncCount2 == 0) { /* digitalWrite(SYNC_OUTPUT_PIN2, HIGH); */ }
else { if (AudioSyncCount2 == 1) { /* digitalWrite(SYNC_OUTPUT_PIN2, LOW); */ } }
if (blinkCount == 0) { /* digitalWrite(LED_PIN1, HIGH); */ }
else { if (blinkCount == BLINK_TIME) { /* digitalWrite(LED_PIN1, LOW); */ } } } // if playing
} // ------------------------------SEND CLOCK PULSE
void updateBpm() { // update BPM function (on the fly)
long interval = 60L * 1000 * 1000 / bpm / CLOCKS_PER_BEAT;
Timer1.setPeriod(interval); }
void setup(void) {
MIDI.begin(); // MIDI init
MIDI.turnThruOff();
bpm = EEPROMReadInt(0);
if (bpm > MAXIMUM_BPM || bpm < MINIMUM_BPM) {
bpm = 120;
}
audio_sync2 = EEPROMReadInt(3);
if (audio_sync2 > 64 || audio_sync2 < 2) {
audio_sync2 = 12;
}
Timer1.initialize(intervalMicroSeconds);
Timer1.setPeriod(60L * 1000 * 1000 / bpm / CLOCKS_PER_BEAT);
Timer1.attachInterrupt(sendClockPulse);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(4);
display.setCursor(0,0);
display.print(bpm);
display.display();
}
void EEPROMWriteInt(int p_address, int p_value)
{
byte lowByte = ((p_value >> 0) & 0xFF);
byte highByte = ((p_value >> 8) & 0xFF);
EEPROM.write(p_address, lowByte);
EEPROM.write(p_address + 1, highByte);
}
unsigned int EEPROMReadInt(int p_address)
{
byte lowByte = EEPROM.read(p_address);
byte highByte = EEPROM.read(p_address + 1);
return ((lowByte << 0) & 0xFF) + ((highByte << 8) & 0xFF00);
}
void bpm_display() {
updateBpm();
EEPROMWriteInt(0,bpm);
display.setTextSize(4);
display.setCursor(0,0);
display.setTextColor(WHITE, BLACK);
display.print(" ");
display.setCursor(0,0);
display.print(bpm);
display.display();
display_update = false;
}
void sync_display() {
EEPROMWriteInt(3,audio_sync2);
int sync_current;
sync_current = audio_sync2 - 12;
if (sync_current < 0) {
sync_current = abs(sync_current);
} else if (sync_current > 0) {
sync_current = -sync_current;
}
display.setTextSize(4);
display.setCursor(0,0);
display.setTextColor(WHITE, BLACK);
display.print(" ");
display.setCursor(0,0);
display.print(sync_current);
display.display();
}
void startOrStop() {
if (!playing) {
MIDI.sendRealTime(midi::Start);
} else {
// all_off();
MIDI.sendRealTime(midi::Stop);
}
playing = !playing;
}
int oldPosition;
void loop(void) { //___________________ LOOP START ___________________LOOP START _______________________ LOOP START ______________________________
byte i = 0;
byte p = 0;
int newPosition = (myEnc.read()/4);
if (newPosition != oldPosition) {
if (oldPosition < newPosition) { i = 2; }
else if (oldPosition > newPosition) { i = 1; }
oldPosition = newPosition; }
if (!sync_editing) {
if (i == 2) { bpm++; if (bpm > MAXIMUM_BPM) { bpm = MAXIMUM_BPM; } bpm_display(); }
else if (i == 1) { bpm--; if (bpm < MINIMUM_BPM) { bpm = MINIMUM_BPM; } bpm_display(); }
else if (p == 1) { sync_display(); sync_editing = true; } //rotary.resetPush();
} else { // 2nd jack audio sync speed
if (p == 1) { bpm_display(); sync_editing = false; }
else if (i == 1) { audio_sync2++; if (audio_sync2 > 64) { audio_sync2 = 64; } sync_display(); }
else if (i == 2) { audio_sync2--; if (audio_sync2 < 2) { audio_sync2 = 2; } sync_display(); }
}
if (kpd.getKeys()) // _________________KEYPAD ___________________________KEYPAD___________________________________________________
{ for (int i=0; i<LIST_MAX; i++) { byte mykey = kpd.key[i].kchar ;
if (( kpd.key[i].stateChanged ) && (mykey == 1)) // -------------------KEY_1----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendNoteOn(60 ,127 ,1 ); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal)
break;
case RELEASED:
MIDI.sendNoteOff(60 ,0 ,1 ); //
break;
} } // --------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 2)) // -------------------KEY_2----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendNoteOn(61 ,127,1 ); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal)
break;
case RELEASED:
MIDI.sendNoteOff( 61, 0, 1); //
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 3)) // -------------------KEY_3----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendNoteOn( 62, 127, 1); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal)
break;
case RELEASED:
MIDI.sendNoteOff( 62, 0, 1); //
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 4)) // -------------------KEY_4----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendNoteOn( 63, 127, 1); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal)
break;
case RELEASED:
MIDI.sendNoteOff( 63, 0, 1); //
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 5)) // -------------------KEY_5----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendNoteOn( 64, 127, 1); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal)
break;
case RELEASED:
MIDI.sendNoteOff( 64, 0, 1); //
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 6)) // -------------------KEY_6----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendNoteOn( 65, 127, 1); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal)
break;
case RELEASED:
MIDI.sendNoteOff( 65, 0, 1); //
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 7)) // -------------------KEY_7----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendNoteOn( 66, 127, 1); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal)
break;
{ switch (kpd.key[i].kstate) {
case RELEASED:
MIDI.sendNoteOff( 66, 0, 1); //
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 8)) // -------------------KEY_8----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendNoteOn( 67, 127, 1); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal)
break;
case RELEASED:
MIDI.sendNoteOff( 67, 0, 1); //
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 9)) // -------------------KEY_9----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendNoteOn( 68, 127, 1); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal)
break;
case RELEASED:
MIDI.sendNoteOff( 68, 0, 1); //
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 10)) // -------------------KEY_10----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
STOP_CUT = 1;
break;
case RELEASED:
STOP_CUT = 0;
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 11)) // -------------------KEY_11----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendNoteOn( 69, 127, 1); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal) ________TRIG-1
if (STOP_CUT ==1) {
MIDI.sendControlChange(123,0,1);
MIDI.sendRealTime(midi::Stop);
MIDI.sendNoteOn( 69, 127, 1); }
break;
case RELEASED:
MIDI.sendNoteOff( 69, 0, 1); //
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 12)) // -------------------KEY_12----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED: // TRIG 2
MIDI.sendNoteOn( 70, 127, 1); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal) _________TRIG-2
if (STOP_CUT ==1) {
MIDI.sendControlChange(123,0,1);
MIDI.sendRealTime(midi::Stop);
MIDI.sendNoteOn( 70, 127, 1); }
break;
case RELEASED:
MIDI.sendNoteOff( 70, 0, 1); //
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 13)) // -------------------KEY_13----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendNoteOn( 71, 127, 1); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal) _________TRIG-3
if (STOP_CUT ==1) {
MIDI.sendControlChange(123,0,1);
MIDI.sendRealTime(midi::Stop);
MIDI.sendNoteOn( 71, 127, 1); }
break;
case RELEASED:
MIDI.sendNoteOff( 71, 0, 1); //
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 14)) // -------------------KEY_14----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendNoteOn( 72, 127, 1); // Note=48, velocity=127, channal=1 MIDI.sendNoteOn(Note,Velocity,Channal) _________TRIG-4
if (STOP_CUT ==1) {
MIDI.sendControlChange(123,0,1);
MIDI.sendRealTime(midi::Stop);
MIDI.sendNoteOn( 72, 127, 1); }
break;
case RELEASED:
MIDI.sendNoteOff( 72, 0, 1); //
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 15)) // -------------------KEY_15----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
Mark_B = micros(); Gap = Mark_B - Mark_A; Mark_A = micros(); // Tempo Taping
if (Gap<1000000) { bpm = 60000000/Gap; bpm_display(); }
break;
case RELEASED:
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 16)) // -------------------KEY_16----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendControlChange(123,0,1);
MIDI.sendRealTime(midi::Stop);
break;
case RELEASED:
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 17)) // -------------------KEY_17----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
Patch++;
MIDI.sendProgramChange(Patch, 1);
break;
case HOLD:
SHIFT_UP = 1;
break;
case RELEASED:
SHIFT_UP = 0;
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 18)) // -------------------KEY_18----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
Patch--;
MIDI.sendProgramChange(Patch, 1);
break;
case HOLD:
SHIFT_DOWN = 1;
break;
case RELEASED:
SHIFT_DOWN = 0;
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 19)) // -------------------KEY_19----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendProgramChange(91, 1);
break;
case RELEASED:
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 20)) // -------------------KEY_20----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendProgramChange(92, 1);
break;
case RELEASED:
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 21)) // -------------------KEY_21----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendProgramChange(93, 1);
break;
case RELEASED:
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 22)) // -------------------KEY_22----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendProgramChange(94, 1);
break;
case RELEASED:
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey == 23)) // -------------------KEY_23----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendProgramChange(95, 1);
break;
case RELEASED:
break;
} } // ------------------------------------------------------------------------------------------------------------------
if (( kpd.key[i].stateChanged ) && (mykey ==24)) // -------------------KEY_24----------------------------
{ switch (kpd.key[i].kstate) {
case PRESSED:
MIDI.sendProgramChange(96, 1);
break;
case RELEASED:
break;
} } // ------------------------------------------------------------------------------------------------------------------
}} // __________________KEYPAD END _______________KEYPAD END_____________________________________________________________
} }
if (SHIFT_UP ==1) { Patch++; MIDI.sendProgramChange(Patch, 1); }
if (SHIFT_DOWN ==1) { Patch--; MIDI.sendProgramChange(Patch, 1); }
} //___________________ LOOP END ___________________LOOP END_______________________ LOOP END ______________________________________________________________________________________
/*
void all_off() { // make sure all sync, led pin stat to low
// digitalWrite(SYNC_OUTPUT_PIN, LOW);
// digitalWrite(SYNC_OUTPUT_PIN2, LOW);
// digitalWrite(LED_PIN1, LOW);
}
void sendClockPulse() { // -----------------------SEND CLOCK PULSE
MIDI.sendRealTime(midi::Clock); // sending midi clock
if (playing) {
blinkCount = (blinkCount + 1) % CLOCKS_PER_BEAT;
blinkCount2 = (blinkCount2 + 1) % (CLOCKS_PER_BEAT / 2);
AudioSyncCount = (AudioSyncCount + 1) % AUDIO_SYNC;
AudioSyncCount2 = (AudioSyncCount2 + 1) % audio_sync2;
if (AudioSyncCount == 0) { digitalWrite(SYNC_OUTPUT_PIN, HIGH); }
else { if (AudioSyncCount == 1) { digitalWrite(SYNC_OUTPUT_PIN, LOW); } }
if (AudioSyncCount2 == 0) { digitalWrite(SYNC_OUTPUT_PIN2, HIGH); }
else { if (AudioSyncCount2 == 1) { digitalWrite(SYNC_OUTPUT_PIN2, LOW); } }
if (blinkCount == 0) { digitalWrite(LED_PIN1, HIGH); }
else { if (blinkCount == BLINK_TIME) { digitalWrite(LED_PIN1, LOW); } } } // if playing
} // ------------------------------SEND CLOCK PULSE
void updateBpm() { // update BPM function (on the fly)
long interval = 60L * 1000 * 1000 / bpm / CLOCKS_PER_BEAT;
Timer1.setPeriod(interval); }
void Tap () { // For Tempo TAP BUtton
Mark_B = micros(); Gap = Mark_B - Mark_A; Mark_A = micros();
if (Gap<1000000) { bpm = 60000000/Gap; bpm_display(); }
}
void BPM_100 () { bpm = 100; ; bpm_display(); }
void START_STOP () { startOrStop(); } // for START Button
void MIDI_Functions () {
MIDI.sendNoteOn(48 ,127, 1); // Note=48, velocity=127, channal=1
MIDI.sendNoteOff(48 ,127, 1); //
MIDI.sendControlChange(123,64,1); // controller number=123, cc_value=64, channal=1
MIDI.sendProgramChange(41, 1); // Prog=41, channal=1
MIDI.sendRealTime(midi::Clock); // sending midi clock
MIDI.sendRealTime(midi::Start); // sending midi Start
MIDI.sendRealTime(midi::Stop); // sending midi Stop
}
*/
Please describe here to solve issue