Skip to main content
Code format
Source Link
jose can u c
  • 7k
  • 2
  • 17
  • 27

========================================== #include <Stepper.h> #include <Servo.h> #include <MIDI.h>

/*ARDUINO MOTOR SHIELD

  • The pin breakdown is as follows:
  • Function Channel A Channel B
  • Direction Digital 12 Digital 13
  • Speed (PWM) Digital 3 Digital 11
  • Brake Digital 9 Digital 8
  • Current Sensing Analog 0 Analog 1 */

const int stepsPerRevolution = 200; // 1.8 deg. step angle(200 steps/360 deg. rev) const int dirChA = 12; // assigning name "dirChA" to pin 12 const int dirChB = 13; // assigning name "dirChB" to pin 13 const int pwmChA = 3; // assigning name "pwmChA" to pin 3 const int pwmChB = 11; // assigning name "pwmChB" to pin 11 const int brkChA = 9; // assigning name "brkChA" to pin 9 const int brkChB = 8; // assigning name "brkChB" to pin 8

const int srvoMtr = 10; // assigning name "srvoMtr" to pin 10

const int pButton1 = 4; // assigning name "pButton1" to pin 4 const int pButton2 = 5; // assigning name "pButton2" to pin 5 const int pButton3 = 6; // assigning name "pButton3" to pin 6 const int pButton4 = 7; // assigning name "pButton4" to pin 7

const int ledLight = 2; // assigning name "ledLight" to pin 2

const int tonePin = 1; // assigning name "tonePin" to pin 1

Stepper myStepper(stepsPerRevolution, dirChA, dirChB); // initialize the stepper library on pins 12 & 13 Servo myServo; // initialize the servo library to logical name myServo

int pButton1State = 0; // variable for reading the pButton1 state as LOW or HIGH int pButton2State = 0; // variable for reading the pButton2 state as LOW or HIGH int pButton3State = 0; // variable for reading the pButton3 state as LOW or HIGH int pButton4State = 0; // variable for reading the pButton4 state as LOW or HIGH

int pButtonFlag = 0; // variable for when button 1 has been pressed and released

int myServoPos = 0; // variable for when servo has reached it's position int myServoFlag = 0; // variable for servo when any of the 4 pButton are pressed

void setup() { //Serial.begin(31250); // initialize the serial port for messaging & troubleshooting //Serial.println("Running UNO Setup");

// 1 Stepper Motor // Serial.println("\nStepper Motor"); pinMode(dirChA, OUTPUT); // initialize pin 12 as an OUTPUT digitalWrite(dirChA, LOW); //initialize pin 12 as LOW (pin voltage is 0 V) // Serial.println("Channel A Dir - PIN 12 - set as Output & Low"); pinMode(dirChB, OUTPUT); // initialize pin 13 as an OUTPUT digitalWrite(dirChB, LOW); //intialize pin 13 as LOW (pin voltage is 0 V) // Serial.println("Channel B Dir - PIN 13 - set as Output & Low"); pinMode(pwmChA, OUTPUT); // initialize pin 3 as an OUTPUT digitalWrite(pwmChA, LOW); //intialize pin 3 as LOW (pin voltage is 0 V) // Serial.println("Channel A PWM - PIN 3 - set as Output & Low"); pinMode(pwmChB, OUTPUT); // initialize pin 11 as an OUTPUT digitalWrite(pwmChB, LOW); //intialize pin 11 as LOW (pin voltage is 0 V) // Serial.println("Channel B PWM - PIN 11 - set as Output & Low"); pinMode(brkChA, OUTPUT); // initialize pin 9 as an OUTPUT digitalWrite(brkChA, LOW); //intialize pin 9 as LOW (pin voltage is 0 V) // Serial.println("Channel A Brake - PIN 9 - set as Output & Low"); pinMode(brkChB, OUTPUT); // initialize pin 8 as an OUTPUT digitalWrite(brkChB, LOW); //intialize pin 8 as LOW (pin voltage is 0 V) // Serial.println("Channel B Brake - PIN 8 - set as Output & Low");

myStepper.setSpeed(60); // set the speed of the stepper motor to 60 RPM // Serial.println("\nSet Stepper Speed to 60 RPM");

// 4 Push Buttons // Serial.println("\n4 Push Buttons"); pinMode(pButton1, INPUT); // initialize pin 4 as an INPUT digitalWrite(pButton1, LOW); // initialize pin 4 as LOW (pin voltage less than 1.5V) // Serial.println("Push Button 1 - PIN 4 - set a Input & Low"); pinMode(pButton2, INPUT); // initialize pin 5 as an INPUT digitalWrite(pButton2, LOW); // initialize pin 5 as LOW (pin voltage less than 1.5V) // Serial.println("Push Button 2 - PIN 5 - set a Input & Low"); pinMode(pButton3, INPUT); // initialize pin 6 as an INPUT digitalWrite(pButton3, LOW); // initialize pin 6 as LOW (pin voltage less than 1.5V) // Serial.println("Push Button 3 - PIN 6 - set a Input & Low"); pinMode(pButton4, INPUT); // initialize pin 7 as an INPUT digitalWrite(pButton4, LOW); // initialize pin 7 as LOW (pin voltage less than 1.5V) // Serial.println("Push Button 4 - PIN 7 - set a Input & Low");

// 1 Led Light // Serial.println("\nLED Light"); pinMode(ledLight, OUTPUT); // initialize pin 2 as an OUTPUT digitalWrite(ledLight, LOW); // initialize pin 2 as LOW (pin voltage is 0 V) // Serial.println("LED Light - PIN 2 - set to Output & Low");

// 1 Piezo Speaker midi(); // Serial.println("Piezo Speaker Inialized"); }

void loop() { //Read button state (pressed or not pressed?) // Serial.println("\nReading button 1 thru 4 states - high or low"); pButton1State = digitalRead(pButton1); // read the state of pButton1 as LOW or HIGH pButton2State = digitalRead(pButton2); // read the state of pButton2 as LOW or HIGH pButton3State = digitalRead(pButton3); // read the state of pButton3 as LOW or HIGH pButton4State = digitalRead(pButton4); // read the state of pButton4 as LOW or HIGH

// check if the pushbutton is pressed. If it is, the pbuttonState is HIGH: if (pButton1State == HIGH) { // Serial.println("\nPush Button 1 Pressed"); pButtonFlag=1; // change pButton1Flag variable // Serial.println("Button 1 flag = 1"); } if (pButtonFlag == 1){ // Serial.println("Stepper Start - Forward 40 steps"); digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(40); // step forward 40 steps to position 1 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop"); delay(2000);

    myServoFlag=1;             // change ServoFlag variable to dispense chocolate

// Serial.println("\nServo Flag = 1 - Dispense Chocolate");

    if (myServoFlag == 1){

// Serial.println("Servo Start"); myServo.attach(srvoMtr); // attaches the servo library to pin 10 // Serial.println("Attach Servo Library to PIN 10");

       for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
           myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
           delay(15);                    // waits 3 sec for the servo to reach the position
       }
       myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop"); // Serial.println("Hold position OPEN for 3 sec"); delay(2000);

       myServo.attach(srvoMtr);   // attaches the servo library to pin 10

// Serial.println("Attach Servo Library to PIN 10");

       for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
           myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
           delay(15);
       }
       myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop - Awaiting next selection"); }
myServoFlag=0; // changes myServoFlag value back to zero (0)
// Serial.println("Servo Flag = 0");

    digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed

// Serial.println("\nLed Light ON"); // Serial.println("\nPlay Tones");

    void midi() {
             tone(tonePin, 233, 203.992851562);
             delay(226.658723958);
             delay(4.82252604167);
             tone(tonePin, 184, 412.325976562);
             delay(458.139973958);
             delay(4.82252604167);
             tone(tonePin, 184, 99.8262890625);
             delay(110.918098958);
             delay(4.82252604167);
             tone(tonePin, 155, 99.8262890625);
             delay(110.918098958);
             delay(4.82252604167);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(4.82252604167);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(236.303776042);
             tone(tonePin, 184, 99.8262890625);
             delay(110.918098958);
             delay(4.82252604167);
             tone(tonePin, 155, 99.8262890625);
             delay(110.918098958);
             delay(4.82252604167);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(4.82252604167);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(236.303776042);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(236.303776042);
             tone(tonePin, 233, 555.555);
             }

    delay(3000);
 

// Serial.println("Stepper Start - Return to position zero");
digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(-40); // step backward 40 steps to position 0 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop");

    digitalWrite(pButton1, LOW);   // initialize pin 4 as LOW (pin voltage less than 1.5V)

// Serial.println("\nReset Button 1 - PIN 4 - Low"); digitalWrite(ledLight, LOW); //turns off light to indicate the sequence is completed // Serial.println("\nLed Light OFF");

    pButtonFlag=0;                // changes pButtonFlat value back to zero (0)

// Serial.println("\Button 1 Flag = 0"); delay(2000); }

// position 2 if (pButton2State == HIGH) { // Serial.println("\nPush Button 2 Pressed"); pButtonFlag=1; // change pButtonFlag variable // Serial.println("Button 2 flag = 1"); } if (pButtonFlag == 1){ // Serial.println("Stepper Start - Forward 80 steps"); digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(80); // step forward 80 steps to position 2 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop"); delay(2000);

    myServoFlag=1;    // change ServoFlag variable to dispense chocolate

// Serial.println("\nServo Flag = 1 - Dispense Chocolate");

    if (myServoFlag == 1){

// Serial.println("Servo Start"); myServo.attach(srvoMtr); // attaches the servo library to pin 10 // Serial.println("Attach Servo Library to PIN 10");

       for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
           myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
           delay(15);                    // waits 3 sec for the servo to reach the position
       }
       myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop"); // Serial.println("Hold position OPEN for 2 sec"); delay(2000);

       myServo.attach(srvoMtr);   // attaches the servo library to pin 10

// Serial.println("Attach Servo Library to PIN 10");

       for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
           myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
           delay(15);
       }
       myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop - Awaiting next selection"); }
myServoFlag=0; // changes myServoFlag value back to zero (0)
// Serial.println("Servo Flag = 0");

    digitalWrite(ledLight, HIGH);    // turn on light to indicate chocolate is dispensed

// Serial.println("\nLed Light ON"); delay(3000);

// Serial.println("Stepper Start - Return to position zero");
digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(-80); // step backward 80 steps to position 0 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop");

    digitalWrite(pButton2, LOW);   // initialize pin 5 as LOW (pin voltage less than 1.5V)

// Serial.println("\nReset Button 2 - PIN 5 - Low"); digitalWrite(ledLight, LOW); // turns off light to indicate the sequence is completed // Serial.println("\nLed Light OFF");

    pButtonFlag=0;   // changes pButton2Flag value back to zero (0)

// Serial.println("\Button 2 Flag = 0"); delay(2000); }

// position 3
if (pButton3State == HIGH) {

// Serial.println("\nPush Button 3 Pressed"); pButtonFlag=1; // change pButtonFlag variable // Serial.println("Button 3 flag = 1"); } if (pButtonFlag == 1){ // Serial.println("Stepper Start - Forward 120 steps"); digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(120); // step forward 120 steps to position 3 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop"); delay(2000);

      myServoFlag=1;   // change ServoFlag variable to dispense chocolate
      Serial.println("\nServo Flag = 1 - Dispense Chocolate");

      if (myServoFlag == 1){

// Serial.println("Servo Start"); myServo.attach(srvoMtr); // attaches the servo library to pin 10 // Serial.println("Attach Servo Library to PIN 10");

         for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
             myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
             delay(15);                    // waits 3 sec for the servo to reach the position
         }
         myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop"); // Serial.println("Hold position OPEN for 2 sec"); delay(2000);

         myServo.attach(srvoMtr);   // attaches the servo library to pin 10

// Serial.println("Attach Servo Library to PIN 10");

         for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
           myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
           delay(15);
         }
         myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop - Awaiting next selection"); }
myServoFlag=0; // changes myServoFlag value back to zero (0)
// Serial.println("Servo Flag = 0");

      digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed

// Serial.println("\nLed Light ON"); delay(3000);

// Serial.println("Stepper Start - Return to position zero");
digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(-120); // step backward 120 steps to position 0 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); // disable power to stepper // Serial.println("Stepper Stop");

      digitalWrite(pButton3, LOW);   // initialize pin 6 as LOW (pin voltage less than 1.5V)

// Serial.println("\nReset Button 3 - PIN 6 - Low"); digitalWrite(ledLight, LOW); // turns off light to indicate the sequence is completed // Serial.println("\nLed Light OFF");

      pButtonFlag=0;   // changes pButton3Flag value back to zero (0)

// Serial.println("\Button 3 Flag = 0"); delay(2000); } // position 4 if (pButton4State == HIGH) { // Serial.println("\nPush Button 4 Pressed"); pButtonFlag=1; // change pButtonFlag variable // Serial.println("Button 3 flag = 1"); } if (pButtonFlag == 1){ // Serial.println("Stepper Start - Forward 160 steps"); digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(160); // step forward 160 steps to position 3 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop"); delay(2000);

      myServoFlag=1;   // change ServoFlag variable to dispense chocolate

// Serial.println("\nServo Flag = 1 - Dispense Chocolate");

      if (myServoFlag == 1){

// Serial.println("Servo Start"); myServo.attach(srvoMtr); // attaches the servo library to pin 10 // Serial.println("Attach Servo Library to PIN 10");

         for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
             myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
             delay(15);                    // waits 3 sec for the servo to reach the position
         }
         myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop"); // Serial.println("Hold position OPEN for 2 sec"); delay(2000);

         myServo.attach(srvoMtr);   // attaches the servo library to pin 10

// Serial.println("Attach Servo Library to PIN 10");

         for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
           myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
           delay(15);
         }
         myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop - Awaiting next selection"); }
myServoFlag=0; // changes myServoFlag value back to zero (0)
// Serial.println("Servo Flag = 0");

      digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed
#include <Stepper.h>
#include <Servo.h>
#include <MIDI.h>

/*ARDUINO MOTOR SHIELD
 * The pin breakdown is as follows:
 * Function          Channel A   Channel B
 * Direction         Digital 12  Digital 13
 * Speed (PWM)       Digital 3   Digital 11
 * Brake             Digital 9   Digital 8
 * Current Sensing   Analog 0  Analog 1
 */
 
const int stepsPerRevolution = 200;  // 1.8 deg. step angle(200 steps/360 deg. rev)
const int dirChA = 12;     // assigning name "dirChA" to pin 12
const int dirChB = 13;     // assigning name "dirChB" to pin 13 
const int pwmChA = 3;      // assigning name "pwmChA" to pin 3 
const int pwmChB = 11;     // assigning name "pwmChB" to pin 11 
const int brkChA = 9;      // assigning name "brkChA" to pin 9
const int brkChB = 8;      // assigning name "brkChB" to pin 8

const int srvoMtr = 10;    // assigning name "srvoMtr" to pin 10

const int pButton1 = 4;    // assigning name "pButton1" to pin 4 
const int pButton2 = 5;    // assigning name "pButton2" to pin 5
const int pButton3 = 6;    // assigning name "pButton3" to pin 6
const int pButton4 = 7;    // assigning name "pButton4" to pin 7

const int ledLight = 2;    // assigning name "ledLight" to pin 2

const int tonePin = 1;     // assigning name "tonePin" to pin 1

Stepper myStepper(stepsPerRevolution, dirChA, dirChB);  // initialize the stepper library on pins 12 & 13
Servo myServo;  // initialize the servo library to logical name myServo
 
int pButton1State = 0;     // variable for reading the pButton1 state as LOW or HIGH
int pButton2State = 0;     // variable for reading the pButton2 state as LOW or HIGH
int pButton3State = 0;     // variable for reading the pButton3 state as LOW or HIGH
int pButton4State = 0;   // variable for reading the pButton4 state as LOW or HIGH

int pButtonFlag = 0;     // variable for when button 1 has been pressed and released

int myServoPos = 0;    // variable for when servo has reached it's position
int myServoFlag = 0;   // variable for servo when any of the 4 pButton are pressed

void setup() {
//Serial.begin(31250);   // initialize the serial port for messaging & troubleshooting
 //Serial.println("Running UNO Setup");
 
 // 1 Stepper Motor
// Serial.println("\nStepper Motor");
 pinMode(dirChA, OUTPUT);   // initialize pin 12 as an OUTPUT
 digitalWrite(dirChA, LOW);   //initialize pin 12 as LOW (pin voltage is 0 V)
// Serial.println("Channel A Dir - PIN 12 - set as Output & Low");
 pinMode(dirChB, OUTPUT);   // initialize pin 13 as an OUTPUT
 digitalWrite(dirChB, LOW);   //intialize pin 13 as LOW (pin voltage is 0 V)
// Serial.println("Channel B Dir - PIN 13 - set as Output & Low");
 pinMode(pwmChA, OUTPUT);   // initialize pin 3 as an OUTPUT
 digitalWrite(pwmChA, LOW);   //intialize pin 3 as LOW (pin voltage is 0 V)
// Serial.println("Channel A PWM - PIN 3 - set as Output & Low");
 pinMode(pwmChB, OUTPUT);   // initialize pin 11 as an OUTPUT
 digitalWrite(pwmChB, LOW);   //intialize pin 11 as LOW (pin voltage is 0 V)
// Serial.println("Channel B PWM - PIN 11 - set as Output & Low");
 pinMode(brkChA, OUTPUT);   // initialize pin 9 as an OUTPUT
 digitalWrite(brkChA, LOW);   //intialize pin 9 as LOW (pin voltage is 0 V)
// Serial.println("Channel A Brake - PIN 9 - set as Output & Low");
 pinMode(brkChB, OUTPUT);   // initialize pin 8 as an OUTPUT
 digitalWrite(brkChB, LOW);   //intialize pin 8 as LOW (pin voltage is 0 V)
// Serial.println("Channel B Brake - PIN 8 - set as Output & Low");
 
 myStepper.setSpeed(60);   // set the speed of the stepper motor to 60 RPM
// Serial.println("\nSet Stepper Speed to 60 RPM");
 
 // 4 Push Buttons
// Serial.println("\n4 Push Buttons");
 pinMode(pButton1, INPUT);   // initialize pin 4 as an INPUT
 digitalWrite(pButton1, LOW);   // initialize pin 4 as LOW (pin voltage less than 1.5V)
// Serial.println("Push Button 1 - PIN 4 - set a Input & Low"); 
 pinMode(pButton2, INPUT);   // initialize pin 5 as an INPUT
 digitalWrite(pButton2, LOW);   // initialize pin 5 as LOW (pin voltage less than 1.5V)
// Serial.println("Push Button 2 - PIN 5 - set a Input & Low");
 pinMode(pButton3, INPUT);   // initialize pin 6 as an INPUT
 digitalWrite(pButton3, LOW);   // initialize pin 6 as LOW (pin voltage less than 1.5V)
// Serial.println("Push Button 3 - PIN 6 - set a Input & Low");
 pinMode(pButton4, INPUT);   // initialize pin 7 as an INPUT
 digitalWrite(pButton4, LOW);   // initialize pin 7 as LOW (pin voltage less than 1.5V)
// Serial.println("Push Button 4 - PIN 7 - set a Input & Low");  
 
 // 1 Led Light
// Serial.println("\nLED Light");
 pinMode(ledLight, OUTPUT);   // initialize pin 2 as an OUTPUT
 digitalWrite(ledLight, LOW);   // initialize pin 2 as LOW (pin voltage is 0 V)
// Serial.println("LED Light - PIN 2 - set to Output & Low");

 // 1 Piezo Speaker
midi();
// Serial.println("Piezo Speaker Inialized");
}

void loop() {
  //Read button state (pressed or not pressed?)
//  Serial.println("\nReading button 1 thru 4 states - high or low");
  pButton1State = digitalRead(pButton1);   // read the state of pButton1 as LOW or HIGH
  pButton2State = digitalRead(pButton2);   // read the state of pButton2 as LOW or HIGH
  pButton3State = digitalRead(pButton3);   // read the state of pButton3 as LOW or HIGH
  pButton4State = digitalRead(pButton4);   // read the state of pButton4 as LOW or HIGH

  // check if the pushbutton is pressed. If it is, the pbuttonState is HIGH:
  if (pButton1State == HIGH) {
 //    Serial.println("\nPush Button 1 Pressed");
     pButtonFlag=1;  // change pButton1Flag variable
 //    Serial.println("Button 1 flag = 1");
  }
     if (pButtonFlag == 1){
 //       Serial.println("Stepper Start - Forward 40 steps");
        digitalWrite(pwmChA, HIGH);   // enable power to stepper
        digitalWrite(pwmChB, HIGH);   // enable power to stepper
        myStepper.step(40);          // step forward 40 steps to position 1
        digitalWrite(pwmChA, LOW);    // disable power to stepper
        digitalWrite(pwmChB, LOW);    //disable power to stepper
 //       Serial.println("Stepper Stop");
        delay(2000);

        myServoFlag=1;             // change ServoFlag variable to dispense chocolate
 //       Serial.println("\nServo Flag = 1 - Dispense Chocolate");
        
        if (myServoFlag == 1){
 //          Serial.println("Servo Start");
           myServo.attach(srvoMtr);   // attaches the servo library to pin 10
 //          Serial.println("Attach Servo Library to PIN 10");
           
           for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
               myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
               delay(15);                    // waits 3 sec for the servo to reach the position
           }
           myServo.detach();   // detaches the servo library from pin 10   
 //          Serial.println("\nDetach Servo Library to PIN 10");
 //          Serial.println("Servo Stop");
 //          Serial.println("Hold position OPEN for 3 sec");
           delay(2000);
           
           myServo.attach(srvoMtr);   // attaches the servo library to pin 10
 //          Serial.println("Attach Servo Library to PIN 10");
           
           for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
               myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
               delay(15);
           }
           myServo.detach();   // detaches the servo library from pin 10   
 //          Serial.println("\nDetach Servo Library to PIN 10");
 //          Serial.println("Servo Stop - Awaiting next selection");
        }    
        myServoFlag=0;                // changes myServoFlag value back to zero (0)     
 //       Serial.println("Servo Flag = 0");
      
        digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed
 //       Serial.println("\nLed Light ON");
 //       Serial.println("\nPlay Tones");
        
        void midi() {
                 tone(tonePin, 233, 203.992851562);
                 delay(226.658723958);
                 delay(4.82252604167);
                 tone(tonePin, 184, 412.325976562);
                 delay(458.139973958);
                 delay(4.82252604167);
                 tone(tonePin, 184, 99.8262890625);
                 delay(110.918098958);
                 delay(4.82252604167);
                 tone(tonePin, 155, 99.8262890625);
                 delay(110.918098958);
                 delay(4.82252604167);
                 tone(tonePin, 184, 203.992851562);
                 delay(226.658723958);
                 delay(4.82252604167);
                 tone(tonePin, 184, 203.992851562);
                 delay(226.658723958);
                 delay(236.303776042);
                 tone(tonePin, 184, 99.8262890625);
                 delay(110.918098958);
                 delay(4.82252604167);
                 tone(tonePin, 155, 99.8262890625);
                 delay(110.918098958);
                 delay(4.82252604167);
                 tone(tonePin, 184, 203.992851562);
                 delay(226.658723958);
                 delay(4.82252604167);
                 tone(tonePin, 184, 203.992851562);
                 delay(226.658723958);
                 delay(236.303776042);
                 tone(tonePin, 184, 203.992851562);
                 delay(226.658723958);
                 delay(236.303776042);
                 tone(tonePin, 233, 555.555);
                 }

        delay(3000);
     
//        Serial.println("Stepper Start - Return to position zero");    
        digitalWrite(pwmChA, HIGH);   // enable power to stepper
        digitalWrite(pwmChB, HIGH);   // enable power to stepper
        myStepper.step(-40);          // step backward 40 steps to position 0
        digitalWrite(pwmChA, LOW);    // disable power to stepper
        digitalWrite(pwmChB, LOW);    //disable power to stepper
//        Serial.println("Stepper Stop");
        
        digitalWrite(pButton1, LOW);   // initialize pin 4 as LOW (pin voltage less than 1.5V)
//        Serial.println("\nReset Button 1 - PIN 4 - Low");
        digitalWrite(ledLight, LOW);   //turns off light to indicate the sequence is completed
//        Serial.println("\nLed Light OFF");
    
        pButtonFlag=0;                // changes pButtonFlat value back to zero (0)
//        Serial.println("\Button 1 Flag = 0");
        delay(2000); 
     }
    
  // position 2
  if (pButton2State == HIGH) {
//     Serial.println("\nPush Button 2 Pressed");
     pButtonFlag=1;  // change pButtonFlag variable
//     Serial.println("Button 2 flag = 1");
  }
     if (pButtonFlag == 1){
//        Serial.println("Stepper Start - Forward 80 steps");
        digitalWrite(pwmChA, HIGH);   // enable power to stepper
        digitalWrite(pwmChB, HIGH);   // enable power to stepper
        myStepper.step(80);          // step forward 80 steps to position 2
        digitalWrite(pwmChA, LOW);    // disable power to stepper
        digitalWrite(pwmChB, LOW);    //disable power to stepper
//        Serial.println("Stepper Stop");
        delay(2000);
        
        myServoFlag=1;    // change ServoFlag variable to dispense chocolate
//        Serial.println("\nServo Flag = 1 - Dispense Chocolate");
    
        if (myServoFlag == 1){
//           Serial.println("Servo Start");
           myServo.attach(srvoMtr);   // attaches the servo library to pin 10
//           Serial.println("Attach Servo Library to PIN 10");
           
           for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
               myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
               delay(15);                    // waits 3 sec for the servo to reach the position
           }
           myServo.detach();   // detaches the servo library from pin 10   
//           Serial.println("\nDetach Servo Library to PIN 10");
//           Serial.println("Servo Stop");
//           Serial.println("Hold position OPEN for 2 sec");
           delay(2000);
           
           myServo.attach(srvoMtr);   // attaches the servo library to pin 10
//           Serial.println("Attach Servo Library to PIN 10");
           
           for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
               myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
               delay(15);
           }
           myServo.detach();   // detaches the servo library from pin 10   
//           Serial.println("\nDetach Servo Library to PIN 10");
//           Serial.println("Servo Stop - Awaiting next selection");
        }    
        myServoFlag=0;                // changes myServoFlag value back to zero (0)     
//        Serial.println("Servo Flag = 0");
    
        digitalWrite(ledLight, HIGH);    // turn on light to indicate chocolate is dispensed
//        Serial.println("\nLed Light ON");
        delay(3000);
     
//        Serial.println("Stepper Start - Return to position zero");    
        digitalWrite(pwmChA, HIGH);   // enable power to stepper
        digitalWrite(pwmChB, HIGH);   // enable power to stepper
        myStepper.step(-80);          // step backward 80 steps to position 0
        digitalWrite(pwmChA, LOW);    // disable power to stepper
        digitalWrite(pwmChB, LOW);    //disable power to stepper
//        Serial.println("Stepper Stop");
        
        digitalWrite(pButton2, LOW);   // initialize pin 5 as LOW (pin voltage less than 1.5V)
//        Serial.println("\nReset Button 2 - PIN 5 - Low");
        digitalWrite(ledLight, LOW);   // turns off light to indicate the sequence is completed
//        Serial.println("\nLed Light OFF");
    
        pButtonFlag=0;   // changes pButton2Flag value back to zero (0)
//        Serial.println("\Button 2 Flag = 0");
        delay(2000); 
    }
       
    // position 3
    if (pButton3State == HIGH) {
//       Serial.println("\nPush Button 3 Pressed");
       pButtonFlag=1;   // change pButtonFlag variable
//       Serial.println("Button 3 flag = 1");
    }
       if (pButtonFlag == 1){
//          Serial.println("Stepper Start - Forward 120 steps");
          digitalWrite(pwmChA, HIGH);   // enable power to stepper
          digitalWrite(pwmChB, HIGH);   // enable power to stepper
          myStepper.step(120);          // step forward 120 steps to position 3
          digitalWrite(pwmChA, LOW);    // disable power to stepper
          digitalWrite(pwmChB, LOW);    //disable power to stepper
//          Serial.println("Stepper Stop");
          delay(2000);
          
          myServoFlag=1;   // change ServoFlag variable to dispense chocolate
          Serial.println("\nServo Flag = 1 - Dispense Chocolate");
    
          if (myServoFlag == 1){
//            Serial.println("Servo Start");
             myServo.attach(srvoMtr);   // attaches the servo library to pin 10
//             Serial.println("Attach Servo Library to PIN 10");
           
             for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
                 myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
                 delay(15);                    // waits 3 sec for the servo to reach the position
             }
             myServo.detach();   // detaches the servo library from pin 10   
//             Serial.println("\nDetach Servo Library to PIN 10");
//             Serial.println("Servo Stop");
//             Serial.println("Hold position OPEN for 2 sec");
             delay(2000);
           
             myServo.attach(srvoMtr);   // attaches the servo library to pin 10
//             Serial.println("Attach Servo Library to PIN 10");
           
             for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
               myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
               delay(15);
             }
             myServo.detach();   // detaches the servo library from pin 10   
//             Serial.println("\nDetach Servo Library to PIN 10");
//             Serial.println("Servo Stop - Awaiting next selection");
          }    
          myServoFlag=0;                // changes myServoFlag value back to zero (0)     
//          Serial.println("Servo Flag = 0");
    
          digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed
//          Serial.println("\nLed Light ON");
          delay(3000);
     
//          Serial.println("Stepper Start - Return to position zero");    
          digitalWrite(pwmChA, HIGH);   // enable power to stepper
          digitalWrite(pwmChB, HIGH);   // enable power to stepper
          myStepper.step(-120);         // step backward 120 steps to position 0
          digitalWrite(pwmChA, LOW);    // disable power to stepper
          digitalWrite(pwmChB, LOW);    // disable power to stepper
//          Serial.println("Stepper Stop");
        
          digitalWrite(pButton3, LOW);   // initialize pin 6 as LOW (pin voltage less than 1.5V)
//          Serial.println("\nReset Button 3 - PIN 6 - Low");
          digitalWrite(ledLight, LOW);   // turns off light to indicate the sequence is completed
//          Serial.println("\nLed Light OFF");
    
          pButtonFlag=0;   // changes pButton3Flag value back to zero (0)
//          Serial.println("\Button 3 Flag = 0");
          delay(2000); 
     }
    // position 4
    if (pButton4State == HIGH) {
//       Serial.println("\nPush Button 4 Pressed");
       pButtonFlag=1;   // change pButtonFlag variable
//       Serial.println("Button 3 flag = 1");
    }
       if (pButtonFlag == 1){
//          Serial.println("Stepper Start - Forward 160 steps");
          digitalWrite(pwmChA, HIGH);   // enable power to stepper
          digitalWrite(pwmChB, HIGH);   // enable power to stepper
          myStepper.step(160);          // step forward 160 steps to position 3
          digitalWrite(pwmChA, LOW);    // disable power to stepper
          digitalWrite(pwmChB, LOW);    //disable power to stepper
//          Serial.println("Stepper Stop");
          delay(2000);
          
          myServoFlag=1;   // change ServoFlag variable to dispense chocolate
//          Serial.println("\nServo Flag = 1 - Dispense Chocolate");
    
          if (myServoFlag == 1){
//             Serial.println("Servo Start");
             myServo.attach(srvoMtr);   // attaches the servo library to pin 10
//             Serial.println("Attach Servo Library to PIN 10");
           
             for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
                 myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
                 delay(15);                    // waits 3 sec for the servo to reach the position
             }
             myServo.detach();   // detaches the servo library from pin 10   
//             Serial.println("\nDetach Servo Library to PIN 10");
//             Serial.println("Servo Stop");
//             Serial.println("Hold position OPEN for 2 sec");
             delay(2000);
           
             myServo.attach(srvoMtr);   // attaches the servo library to pin 10
//             Serial.println("Attach Servo Library to PIN 10");
           
             for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
               myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
               delay(15);
             }
             myServo.detach();   // detaches the servo library from pin 10   
//             Serial.println("\nDetach Servo Library to PIN 10");
//             Serial.println("Servo Stop - Awaiting next selection");
          }    
          myServoFlag=0;   // changes myServoFlag value back to zero (0)     
//          Serial.println("Servo Flag = 0");
    
          digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed
//          Serial.println("\nLed Light ON");
          delay(3000);
     
//          Serial.println("Stepper Start - Return to position zero");    
          digitalWrite(pwmChA, HIGH);   // enable power to stepper
          digitalWrite(pwmChB, HIGH);   // enable power to stepper
          myStepper.step(-160);         // step backward 160 steps to position 0
          digitalWrite(pwmChA, LOW);    // disable power to stepper
          digitalWrite(pwmChB, LOW);    // disable power to stepper
//          Serial.println("Stepper Stop");
        
          digitalWrite(pButton3, LOW);   // initialize pin 6 as LOW (pin voltage less than 1.5V)
//          Serial.println("\nReset Button 3 - PIN 6 - Low");
          digitalWrite(ledLight, LOW);   // turns off light to indicate the sequence is completed
//          Serial.println("\nLed Light OFF");
    
          pButtonFlag=0;   // changes pButton3Flag value back to zero (0)
//          Serial.println("\Button 4 Flag = 0");
          delay(2000);          
       }
}  

// Serial.println("\nLed Light ON"); delay(3000);

// Serial.println("Stepper Start - Return to position zero");
digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(-160); // step backward 160 steps to position 0 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); // disable power to stepper // Serial.println("Stepper Stop");

      digitalWrite(pButton3, LOW);   // initialize pin 6 as LOW (pin voltage less than 1.5V)

I'm including the "midi();" function to play a short melody through an attached Piezo speaker (buzzer) once the led is activated.

// Serial.println("\nReset Button 3 - PIN 6 When I compile the midi code on its own in a separate sketch it works - Low"); digitalWrite(ledLight, LOWsee below); // turns off light to indicate the sequence is completed // Serial.println("\nLed Light OFF");

int tonePin = 1;
void setup() {
 midi pButtonFlag=0;();
}
 
void midi() {
    tone(tonePin, 233, 203.992851562);
    delay(226.658723958);
    delay(4.82252604167);
    tone(tonePin, 184, 412.325976562);
    delay(458.139973958);
    delay(4.82252604167);
    tone(tonePin, 184, 99.8262890625);
    delay(110.918098958);
    delay(4.82252604167);
    tone(tonePin, 155, 99.8262890625);
    delay(110.918098958);
    delay(4.82252604167);
    tone(tonePin, 184, 203.992851562);
    delay(226.658723958);
    delay(4.82252604167);
    tone(tonePin, 184, 203.992851562);
    delay(226.658723958);
    delay(236.303776042);
    tone(tonePin, 184, 99.8262890625);
    delay(110.918098958);
    delay(4.82252604167);
    tone(tonePin, 155, 99.8262890625);
    delay(110.918098958);
    delay(4.82252604167);
    tone(tonePin, 184, 203.992851562);
    delay(226.658723958);
    delay(4.82252604167);
    tone(tonePin, 184, 203.992851562);
    delay(226.658723958);
    delay(236.303776042);
    tone(tonePin, 184, 203.992851562);
    delay(226.658723958);
    delay(236.303776042);
    tone(tonePin, 233, 555.555);
   
   }

void loop() {
  // changesput pButton3Flagyour valuemain backcode here, to zerorun (0)repeatedly:

}

// Serial.println("\Button 4 Flag = 0"); delay(2000); } }

I'm including the "midi();" function to play a short melody through an attached Piezo speaker (buzzer) once the led is activated.

When I compile the midi code on its own in a separate sketch it works (see below).

int tonePin = 1; void setup() { midi (); }

void midi() { tone(tonePin, 233, 203.992851562); delay(226.658723958); delay(4.82252604167); tone(tonePin, 184, 412.325976562); delay(458.139973958); delay(4.82252604167); tone(tonePin, 184, 99.8262890625); delay(110.918098958); delay(4.82252604167); tone(tonePin, 155, 99.8262890625); delay(110.918098958); delay(4.82252604167); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(4.82252604167); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(236.303776042); tone(tonePin, 184, 99.8262890625); delay(110.918098958); delay(4.82252604167); tone(tonePin, 155, 99.8262890625); delay(110.918098958); delay(4.82252604167); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(4.82252604167); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(236.303776042); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(236.303776042); tone(tonePin, 233, 555.555);

}

void loop() { // put your main code here, to run repeatedly:

}

========================================== #include <Stepper.h> #include <Servo.h> #include <MIDI.h>

/*ARDUINO MOTOR SHIELD

  • The pin breakdown is as follows:
  • Function Channel A Channel B
  • Direction Digital 12 Digital 13
  • Speed (PWM) Digital 3 Digital 11
  • Brake Digital 9 Digital 8
  • Current Sensing Analog 0 Analog 1 */

const int stepsPerRevolution = 200; // 1.8 deg. step angle(200 steps/360 deg. rev) const int dirChA = 12; // assigning name "dirChA" to pin 12 const int dirChB = 13; // assigning name "dirChB" to pin 13 const int pwmChA = 3; // assigning name "pwmChA" to pin 3 const int pwmChB = 11; // assigning name "pwmChB" to pin 11 const int brkChA = 9; // assigning name "brkChA" to pin 9 const int brkChB = 8; // assigning name "brkChB" to pin 8

const int srvoMtr = 10; // assigning name "srvoMtr" to pin 10

const int pButton1 = 4; // assigning name "pButton1" to pin 4 const int pButton2 = 5; // assigning name "pButton2" to pin 5 const int pButton3 = 6; // assigning name "pButton3" to pin 6 const int pButton4 = 7; // assigning name "pButton4" to pin 7

const int ledLight = 2; // assigning name "ledLight" to pin 2

const int tonePin = 1; // assigning name "tonePin" to pin 1

Stepper myStepper(stepsPerRevolution, dirChA, dirChB); // initialize the stepper library on pins 12 & 13 Servo myServo; // initialize the servo library to logical name myServo

int pButton1State = 0; // variable for reading the pButton1 state as LOW or HIGH int pButton2State = 0; // variable for reading the pButton2 state as LOW or HIGH int pButton3State = 0; // variable for reading the pButton3 state as LOW or HIGH int pButton4State = 0; // variable for reading the pButton4 state as LOW or HIGH

int pButtonFlag = 0; // variable for when button 1 has been pressed and released

int myServoPos = 0; // variable for when servo has reached it's position int myServoFlag = 0; // variable for servo when any of the 4 pButton are pressed

void setup() { //Serial.begin(31250); // initialize the serial port for messaging & troubleshooting //Serial.println("Running UNO Setup");

// 1 Stepper Motor // Serial.println("\nStepper Motor"); pinMode(dirChA, OUTPUT); // initialize pin 12 as an OUTPUT digitalWrite(dirChA, LOW); //initialize pin 12 as LOW (pin voltage is 0 V) // Serial.println("Channel A Dir - PIN 12 - set as Output & Low"); pinMode(dirChB, OUTPUT); // initialize pin 13 as an OUTPUT digitalWrite(dirChB, LOW); //intialize pin 13 as LOW (pin voltage is 0 V) // Serial.println("Channel B Dir - PIN 13 - set as Output & Low"); pinMode(pwmChA, OUTPUT); // initialize pin 3 as an OUTPUT digitalWrite(pwmChA, LOW); //intialize pin 3 as LOW (pin voltage is 0 V) // Serial.println("Channel A PWM - PIN 3 - set as Output & Low"); pinMode(pwmChB, OUTPUT); // initialize pin 11 as an OUTPUT digitalWrite(pwmChB, LOW); //intialize pin 11 as LOW (pin voltage is 0 V) // Serial.println("Channel B PWM - PIN 11 - set as Output & Low"); pinMode(brkChA, OUTPUT); // initialize pin 9 as an OUTPUT digitalWrite(brkChA, LOW); //intialize pin 9 as LOW (pin voltage is 0 V) // Serial.println("Channel A Brake - PIN 9 - set as Output & Low"); pinMode(brkChB, OUTPUT); // initialize pin 8 as an OUTPUT digitalWrite(brkChB, LOW); //intialize pin 8 as LOW (pin voltage is 0 V) // Serial.println("Channel B Brake - PIN 8 - set as Output & Low");

myStepper.setSpeed(60); // set the speed of the stepper motor to 60 RPM // Serial.println("\nSet Stepper Speed to 60 RPM");

// 4 Push Buttons // Serial.println("\n4 Push Buttons"); pinMode(pButton1, INPUT); // initialize pin 4 as an INPUT digitalWrite(pButton1, LOW); // initialize pin 4 as LOW (pin voltage less than 1.5V) // Serial.println("Push Button 1 - PIN 4 - set a Input & Low"); pinMode(pButton2, INPUT); // initialize pin 5 as an INPUT digitalWrite(pButton2, LOW); // initialize pin 5 as LOW (pin voltage less than 1.5V) // Serial.println("Push Button 2 - PIN 5 - set a Input & Low"); pinMode(pButton3, INPUT); // initialize pin 6 as an INPUT digitalWrite(pButton3, LOW); // initialize pin 6 as LOW (pin voltage less than 1.5V) // Serial.println("Push Button 3 - PIN 6 - set a Input & Low"); pinMode(pButton4, INPUT); // initialize pin 7 as an INPUT digitalWrite(pButton4, LOW); // initialize pin 7 as LOW (pin voltage less than 1.5V) // Serial.println("Push Button 4 - PIN 7 - set a Input & Low");

// 1 Led Light // Serial.println("\nLED Light"); pinMode(ledLight, OUTPUT); // initialize pin 2 as an OUTPUT digitalWrite(ledLight, LOW); // initialize pin 2 as LOW (pin voltage is 0 V) // Serial.println("LED Light - PIN 2 - set to Output & Low");

// 1 Piezo Speaker midi(); // Serial.println("Piezo Speaker Inialized"); }

void loop() { //Read button state (pressed or not pressed?) // Serial.println("\nReading button 1 thru 4 states - high or low"); pButton1State = digitalRead(pButton1); // read the state of pButton1 as LOW or HIGH pButton2State = digitalRead(pButton2); // read the state of pButton2 as LOW or HIGH pButton3State = digitalRead(pButton3); // read the state of pButton3 as LOW or HIGH pButton4State = digitalRead(pButton4); // read the state of pButton4 as LOW or HIGH

// check if the pushbutton is pressed. If it is, the pbuttonState is HIGH: if (pButton1State == HIGH) { // Serial.println("\nPush Button 1 Pressed"); pButtonFlag=1; // change pButton1Flag variable // Serial.println("Button 1 flag = 1"); } if (pButtonFlag == 1){ // Serial.println("Stepper Start - Forward 40 steps"); digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(40); // step forward 40 steps to position 1 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop"); delay(2000);

    myServoFlag=1;             // change ServoFlag variable to dispense chocolate

// Serial.println("\nServo Flag = 1 - Dispense Chocolate");

    if (myServoFlag == 1){

// Serial.println("Servo Start"); myServo.attach(srvoMtr); // attaches the servo library to pin 10 // Serial.println("Attach Servo Library to PIN 10");

       for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
           myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
           delay(15);                    // waits 3 sec for the servo to reach the position
       }
       myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop"); // Serial.println("Hold position OPEN for 3 sec"); delay(2000);

       myServo.attach(srvoMtr);   // attaches the servo library to pin 10

// Serial.println("Attach Servo Library to PIN 10");

       for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
           myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
           delay(15);
       }
       myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop - Awaiting next selection"); }
myServoFlag=0; // changes myServoFlag value back to zero (0)
// Serial.println("Servo Flag = 0");

    digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed

// Serial.println("\nLed Light ON"); // Serial.println("\nPlay Tones");

    void midi() {
             tone(tonePin, 233, 203.992851562);
             delay(226.658723958);
             delay(4.82252604167);
             tone(tonePin, 184, 412.325976562);
             delay(458.139973958);
             delay(4.82252604167);
             tone(tonePin, 184, 99.8262890625);
             delay(110.918098958);
             delay(4.82252604167);
             tone(tonePin, 155, 99.8262890625);
             delay(110.918098958);
             delay(4.82252604167);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(4.82252604167);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(236.303776042);
             tone(tonePin, 184, 99.8262890625);
             delay(110.918098958);
             delay(4.82252604167);
             tone(tonePin, 155, 99.8262890625);
             delay(110.918098958);
             delay(4.82252604167);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(4.82252604167);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(236.303776042);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(236.303776042);
             tone(tonePin, 233, 555.555);
             }

    delay(3000);
 

// Serial.println("Stepper Start - Return to position zero");
digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(-40); // step backward 40 steps to position 0 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop");

    digitalWrite(pButton1, LOW);   // initialize pin 4 as LOW (pin voltage less than 1.5V)

// Serial.println("\nReset Button 1 - PIN 4 - Low"); digitalWrite(ledLight, LOW); //turns off light to indicate the sequence is completed // Serial.println("\nLed Light OFF");

    pButtonFlag=0;                // changes pButtonFlat value back to zero (0)

// Serial.println("\Button 1 Flag = 0"); delay(2000); }

// position 2 if (pButton2State == HIGH) { // Serial.println("\nPush Button 2 Pressed"); pButtonFlag=1; // change pButtonFlag variable // Serial.println("Button 2 flag = 1"); } if (pButtonFlag == 1){ // Serial.println("Stepper Start - Forward 80 steps"); digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(80); // step forward 80 steps to position 2 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop"); delay(2000);

    myServoFlag=1;    // change ServoFlag variable to dispense chocolate

// Serial.println("\nServo Flag = 1 - Dispense Chocolate");

    if (myServoFlag == 1){

// Serial.println("Servo Start"); myServo.attach(srvoMtr); // attaches the servo library to pin 10 // Serial.println("Attach Servo Library to PIN 10");

       for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
           myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
           delay(15);                    // waits 3 sec for the servo to reach the position
       }
       myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop"); // Serial.println("Hold position OPEN for 2 sec"); delay(2000);

       myServo.attach(srvoMtr);   // attaches the servo library to pin 10

// Serial.println("Attach Servo Library to PIN 10");

       for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
           myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
           delay(15);
       }
       myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop - Awaiting next selection"); }
myServoFlag=0; // changes myServoFlag value back to zero (0)
// Serial.println("Servo Flag = 0");

    digitalWrite(ledLight, HIGH);    // turn on light to indicate chocolate is dispensed

// Serial.println("\nLed Light ON"); delay(3000);

// Serial.println("Stepper Start - Return to position zero");
digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(-80); // step backward 80 steps to position 0 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop");

    digitalWrite(pButton2, LOW);   // initialize pin 5 as LOW (pin voltage less than 1.5V)

// Serial.println("\nReset Button 2 - PIN 5 - Low"); digitalWrite(ledLight, LOW); // turns off light to indicate the sequence is completed // Serial.println("\nLed Light OFF");

    pButtonFlag=0;   // changes pButton2Flag value back to zero (0)

// Serial.println("\Button 2 Flag = 0"); delay(2000); }

// position 3
if (pButton3State == HIGH) {

// Serial.println("\nPush Button 3 Pressed"); pButtonFlag=1; // change pButtonFlag variable // Serial.println("Button 3 flag = 1"); } if (pButtonFlag == 1){ // Serial.println("Stepper Start - Forward 120 steps"); digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(120); // step forward 120 steps to position 3 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop"); delay(2000);

      myServoFlag=1;   // change ServoFlag variable to dispense chocolate
      Serial.println("\nServo Flag = 1 - Dispense Chocolate");

      if (myServoFlag == 1){

// Serial.println("Servo Start"); myServo.attach(srvoMtr); // attaches the servo library to pin 10 // Serial.println("Attach Servo Library to PIN 10");

         for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
             myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
             delay(15);                    // waits 3 sec for the servo to reach the position
         }
         myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop"); // Serial.println("Hold position OPEN for 2 sec"); delay(2000);

         myServo.attach(srvoMtr);   // attaches the servo library to pin 10

// Serial.println("Attach Servo Library to PIN 10");

         for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
           myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
           delay(15);
         }
         myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop - Awaiting next selection"); }
myServoFlag=0; // changes myServoFlag value back to zero (0)
// Serial.println("Servo Flag = 0");

      digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed

// Serial.println("\nLed Light ON"); delay(3000);

// Serial.println("Stepper Start - Return to position zero");
digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(-120); // step backward 120 steps to position 0 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); // disable power to stepper // Serial.println("Stepper Stop");

      digitalWrite(pButton3, LOW);   // initialize pin 6 as LOW (pin voltage less than 1.5V)

// Serial.println("\nReset Button 3 - PIN 6 - Low"); digitalWrite(ledLight, LOW); // turns off light to indicate the sequence is completed // Serial.println("\nLed Light OFF");

      pButtonFlag=0;   // changes pButton3Flag value back to zero (0)

// Serial.println("\Button 3 Flag = 0"); delay(2000); } // position 4 if (pButton4State == HIGH) { // Serial.println("\nPush Button 4 Pressed"); pButtonFlag=1; // change pButtonFlag variable // Serial.println("Button 3 flag = 1"); } if (pButtonFlag == 1){ // Serial.println("Stepper Start - Forward 160 steps"); digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(160); // step forward 160 steps to position 3 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop"); delay(2000);

      myServoFlag=1;   // change ServoFlag variable to dispense chocolate

// Serial.println("\nServo Flag = 1 - Dispense Chocolate");

      if (myServoFlag == 1){

// Serial.println("Servo Start"); myServo.attach(srvoMtr); // attaches the servo library to pin 10 // Serial.println("Attach Servo Library to PIN 10");

         for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
             myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
             delay(15);                    // waits 3 sec for the servo to reach the position
         }
         myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop"); // Serial.println("Hold position OPEN for 2 sec"); delay(2000);

         myServo.attach(srvoMtr);   // attaches the servo library to pin 10

// Serial.println("Attach Servo Library to PIN 10");

         for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
           myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
           delay(15);
         }
         myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop - Awaiting next selection"); }
myServoFlag=0; // changes myServoFlag value back to zero (0)
// Serial.println("Servo Flag = 0");

      digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed

// Serial.println("\nLed Light ON"); delay(3000);

// Serial.println("Stepper Start - Return to position zero");
digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(-160); // step backward 160 steps to position 0 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); // disable power to stepper // Serial.println("Stepper Stop");

      digitalWrite(pButton3, LOW);   // initialize pin 6 as LOW (pin voltage less than 1.5V)

// Serial.println("\nReset Button 3 - PIN 6 - Low"); digitalWrite(ledLight, LOW); // turns off light to indicate the sequence is completed // Serial.println("\nLed Light OFF");

      pButtonFlag=0;   // changes pButton3Flag value back to zero (0)

// Serial.println("\Button 4 Flag = 0"); delay(2000); } }

I'm including the "midi();" function to play a short melody through an attached Piezo speaker (buzzer) once the led is activated.

When I compile the midi code on its own in a separate sketch it works (see below).

int tonePin = 1; void setup() { midi (); }

void midi() { tone(tonePin, 233, 203.992851562); delay(226.658723958); delay(4.82252604167); tone(tonePin, 184, 412.325976562); delay(458.139973958); delay(4.82252604167); tone(tonePin, 184, 99.8262890625); delay(110.918098958); delay(4.82252604167); tone(tonePin, 155, 99.8262890625); delay(110.918098958); delay(4.82252604167); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(4.82252604167); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(236.303776042); tone(tonePin, 184, 99.8262890625); delay(110.918098958); delay(4.82252604167); tone(tonePin, 155, 99.8262890625); delay(110.918098958); delay(4.82252604167); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(4.82252604167); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(236.303776042); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(236.303776042); tone(tonePin, 233, 555.555);

}

void loop() { // put your main code here, to run repeatedly:

}

#include <Stepper.h>
#include <Servo.h>
#include <MIDI.h>

/*ARDUINO MOTOR SHIELD
 * The pin breakdown is as follows:
 * Function          Channel A   Channel B
 * Direction         Digital 12  Digital 13
 * Speed (PWM)       Digital 3   Digital 11
 * Brake             Digital 9   Digital 8
 * Current Sensing   Analog 0  Analog 1
 */
 
const int stepsPerRevolution = 200;  // 1.8 deg. step angle(200 steps/360 deg. rev)
const int dirChA = 12;     // assigning name "dirChA" to pin 12
const int dirChB = 13;     // assigning name "dirChB" to pin 13 
const int pwmChA = 3;      // assigning name "pwmChA" to pin 3 
const int pwmChB = 11;     // assigning name "pwmChB" to pin 11 
const int brkChA = 9;      // assigning name "brkChA" to pin 9
const int brkChB = 8;      // assigning name "brkChB" to pin 8

const int srvoMtr = 10;    // assigning name "srvoMtr" to pin 10

const int pButton1 = 4;    // assigning name "pButton1" to pin 4 
const int pButton2 = 5;    // assigning name "pButton2" to pin 5
const int pButton3 = 6;    // assigning name "pButton3" to pin 6
const int pButton4 = 7;    // assigning name "pButton4" to pin 7

const int ledLight = 2;    // assigning name "ledLight" to pin 2

const int tonePin = 1;     // assigning name "tonePin" to pin 1

Stepper myStepper(stepsPerRevolution, dirChA, dirChB);  // initialize the stepper library on pins 12 & 13
Servo myServo;  // initialize the servo library to logical name myServo
 
int pButton1State = 0;     // variable for reading the pButton1 state as LOW or HIGH
int pButton2State = 0;     // variable for reading the pButton2 state as LOW or HIGH
int pButton3State = 0;     // variable for reading the pButton3 state as LOW or HIGH
int pButton4State = 0;   // variable for reading the pButton4 state as LOW or HIGH

int pButtonFlag = 0;     // variable for when button 1 has been pressed and released

int myServoPos = 0;    // variable for when servo has reached it's position
int myServoFlag = 0;   // variable for servo when any of the 4 pButton are pressed

void setup() {
//Serial.begin(31250);   // initialize the serial port for messaging & troubleshooting
 //Serial.println("Running UNO Setup");
 
 // 1 Stepper Motor
// Serial.println("\nStepper Motor");
 pinMode(dirChA, OUTPUT);   // initialize pin 12 as an OUTPUT
 digitalWrite(dirChA, LOW);   //initialize pin 12 as LOW (pin voltage is 0 V)
// Serial.println("Channel A Dir - PIN 12 - set as Output & Low");
 pinMode(dirChB, OUTPUT);   // initialize pin 13 as an OUTPUT
 digitalWrite(dirChB, LOW);   //intialize pin 13 as LOW (pin voltage is 0 V)
// Serial.println("Channel B Dir - PIN 13 - set as Output & Low");
 pinMode(pwmChA, OUTPUT);   // initialize pin 3 as an OUTPUT
 digitalWrite(pwmChA, LOW);   //intialize pin 3 as LOW (pin voltage is 0 V)
// Serial.println("Channel A PWM - PIN 3 - set as Output & Low");
 pinMode(pwmChB, OUTPUT);   // initialize pin 11 as an OUTPUT
 digitalWrite(pwmChB, LOW);   //intialize pin 11 as LOW (pin voltage is 0 V)
// Serial.println("Channel B PWM - PIN 11 - set as Output & Low");
 pinMode(brkChA, OUTPUT);   // initialize pin 9 as an OUTPUT
 digitalWrite(brkChA, LOW);   //intialize pin 9 as LOW (pin voltage is 0 V)
// Serial.println("Channel A Brake - PIN 9 - set as Output & Low");
 pinMode(brkChB, OUTPUT);   // initialize pin 8 as an OUTPUT
 digitalWrite(brkChB, LOW);   //intialize pin 8 as LOW (pin voltage is 0 V)
// Serial.println("Channel B Brake - PIN 8 - set as Output & Low");
 
 myStepper.setSpeed(60);   // set the speed of the stepper motor to 60 RPM
// Serial.println("\nSet Stepper Speed to 60 RPM");
 
 // 4 Push Buttons
// Serial.println("\n4 Push Buttons");
 pinMode(pButton1, INPUT);   // initialize pin 4 as an INPUT
 digitalWrite(pButton1, LOW);   // initialize pin 4 as LOW (pin voltage less than 1.5V)
// Serial.println("Push Button 1 - PIN 4 - set a Input & Low"); 
 pinMode(pButton2, INPUT);   // initialize pin 5 as an INPUT
 digitalWrite(pButton2, LOW);   // initialize pin 5 as LOW (pin voltage less than 1.5V)
// Serial.println("Push Button 2 - PIN 5 - set a Input & Low");
 pinMode(pButton3, INPUT);   // initialize pin 6 as an INPUT
 digitalWrite(pButton3, LOW);   // initialize pin 6 as LOW (pin voltage less than 1.5V)
// Serial.println("Push Button 3 - PIN 6 - set a Input & Low");
 pinMode(pButton4, INPUT);   // initialize pin 7 as an INPUT
 digitalWrite(pButton4, LOW);   // initialize pin 7 as LOW (pin voltage less than 1.5V)
// Serial.println("Push Button 4 - PIN 7 - set a Input & Low");  
 
 // 1 Led Light
// Serial.println("\nLED Light");
 pinMode(ledLight, OUTPUT);   // initialize pin 2 as an OUTPUT
 digitalWrite(ledLight, LOW);   // initialize pin 2 as LOW (pin voltage is 0 V)
// Serial.println("LED Light - PIN 2 - set to Output & Low");

 // 1 Piezo Speaker
midi();
// Serial.println("Piezo Speaker Inialized");
}

void loop() {
  //Read button state (pressed or not pressed?)
//  Serial.println("\nReading button 1 thru 4 states - high or low");
  pButton1State = digitalRead(pButton1);   // read the state of pButton1 as LOW or HIGH
  pButton2State = digitalRead(pButton2);   // read the state of pButton2 as LOW or HIGH
  pButton3State = digitalRead(pButton3);   // read the state of pButton3 as LOW or HIGH
  pButton4State = digitalRead(pButton4);   // read the state of pButton4 as LOW or HIGH

  // check if the pushbutton is pressed. If it is, the pbuttonState is HIGH:
  if (pButton1State == HIGH) {
 //    Serial.println("\nPush Button 1 Pressed");
     pButtonFlag=1;  // change pButton1Flag variable
 //    Serial.println("Button 1 flag = 1");
  }
     if (pButtonFlag == 1){
 //       Serial.println("Stepper Start - Forward 40 steps");
        digitalWrite(pwmChA, HIGH);   // enable power to stepper
        digitalWrite(pwmChB, HIGH);   // enable power to stepper
        myStepper.step(40);          // step forward 40 steps to position 1
        digitalWrite(pwmChA, LOW);    // disable power to stepper
        digitalWrite(pwmChB, LOW);    //disable power to stepper
 //       Serial.println("Stepper Stop");
        delay(2000);

        myServoFlag=1;             // change ServoFlag variable to dispense chocolate
 //       Serial.println("\nServo Flag = 1 - Dispense Chocolate");
        
        if (myServoFlag == 1){
 //          Serial.println("Servo Start");
           myServo.attach(srvoMtr);   // attaches the servo library to pin 10
 //          Serial.println("Attach Servo Library to PIN 10");
           
           for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
               myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
               delay(15);                    // waits 3 sec for the servo to reach the position
           }
           myServo.detach();   // detaches the servo library from pin 10   
 //          Serial.println("\nDetach Servo Library to PIN 10");
 //          Serial.println("Servo Stop");
 //          Serial.println("Hold position OPEN for 3 sec");
           delay(2000);
           
           myServo.attach(srvoMtr);   // attaches the servo library to pin 10
 //          Serial.println("Attach Servo Library to PIN 10");
           
           for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
               myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
               delay(15);
           }
           myServo.detach();   // detaches the servo library from pin 10   
 //          Serial.println("\nDetach Servo Library to PIN 10");
 //          Serial.println("Servo Stop - Awaiting next selection");
        }    
        myServoFlag=0;                // changes myServoFlag value back to zero (0)     
 //       Serial.println("Servo Flag = 0");
      
        digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed
 //       Serial.println("\nLed Light ON");
 //       Serial.println("\nPlay Tones");
        
        void midi() {
                 tone(tonePin, 233, 203.992851562);
                 delay(226.658723958);
                 delay(4.82252604167);
                 tone(tonePin, 184, 412.325976562);
                 delay(458.139973958);
                 delay(4.82252604167);
                 tone(tonePin, 184, 99.8262890625);
                 delay(110.918098958);
                 delay(4.82252604167);
                 tone(tonePin, 155, 99.8262890625);
                 delay(110.918098958);
                 delay(4.82252604167);
                 tone(tonePin, 184, 203.992851562);
                 delay(226.658723958);
                 delay(4.82252604167);
                 tone(tonePin, 184, 203.992851562);
                 delay(226.658723958);
                 delay(236.303776042);
                 tone(tonePin, 184, 99.8262890625);
                 delay(110.918098958);
                 delay(4.82252604167);
                 tone(tonePin, 155, 99.8262890625);
                 delay(110.918098958);
                 delay(4.82252604167);
                 tone(tonePin, 184, 203.992851562);
                 delay(226.658723958);
                 delay(4.82252604167);
                 tone(tonePin, 184, 203.992851562);
                 delay(226.658723958);
                 delay(236.303776042);
                 tone(tonePin, 184, 203.992851562);
                 delay(226.658723958);
                 delay(236.303776042);
                 tone(tonePin, 233, 555.555);
                 }

        delay(3000);
     
//        Serial.println("Stepper Start - Return to position zero");    
        digitalWrite(pwmChA, HIGH);   // enable power to stepper
        digitalWrite(pwmChB, HIGH);   // enable power to stepper
        myStepper.step(-40);          // step backward 40 steps to position 0
        digitalWrite(pwmChA, LOW);    // disable power to stepper
        digitalWrite(pwmChB, LOW);    //disable power to stepper
//        Serial.println("Stepper Stop");
        
        digitalWrite(pButton1, LOW);   // initialize pin 4 as LOW (pin voltage less than 1.5V)
//        Serial.println("\nReset Button 1 - PIN 4 - Low");
        digitalWrite(ledLight, LOW);   //turns off light to indicate the sequence is completed
//        Serial.println("\nLed Light OFF");
    
        pButtonFlag=0;                // changes pButtonFlat value back to zero (0)
//        Serial.println("\Button 1 Flag = 0");
        delay(2000); 
     }
    
  // position 2
  if (pButton2State == HIGH) {
//     Serial.println("\nPush Button 2 Pressed");
     pButtonFlag=1;  // change pButtonFlag variable
//     Serial.println("Button 2 flag = 1");
  }
     if (pButtonFlag == 1){
//        Serial.println("Stepper Start - Forward 80 steps");
        digitalWrite(pwmChA, HIGH);   // enable power to stepper
        digitalWrite(pwmChB, HIGH);   // enable power to stepper
        myStepper.step(80);          // step forward 80 steps to position 2
        digitalWrite(pwmChA, LOW);    // disable power to stepper
        digitalWrite(pwmChB, LOW);    //disable power to stepper
//        Serial.println("Stepper Stop");
        delay(2000);
        
        myServoFlag=1;    // change ServoFlag variable to dispense chocolate
//        Serial.println("\nServo Flag = 1 - Dispense Chocolate");
    
        if (myServoFlag == 1){
//           Serial.println("Servo Start");
           myServo.attach(srvoMtr);   // attaches the servo library to pin 10
//           Serial.println("Attach Servo Library to PIN 10");
           
           for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
               myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
               delay(15);                    // waits 3 sec for the servo to reach the position
           }
           myServo.detach();   // detaches the servo library from pin 10   
//           Serial.println("\nDetach Servo Library to PIN 10");
//           Serial.println("Servo Stop");
//           Serial.println("Hold position OPEN for 2 sec");
           delay(2000);
           
           myServo.attach(srvoMtr);   // attaches the servo library to pin 10
//           Serial.println("Attach Servo Library to PIN 10");
           
           for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
               myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
               delay(15);
           }
           myServo.detach();   // detaches the servo library from pin 10   
//           Serial.println("\nDetach Servo Library to PIN 10");
//           Serial.println("Servo Stop - Awaiting next selection");
        }    
        myServoFlag=0;                // changes myServoFlag value back to zero (0)     
//        Serial.println("Servo Flag = 0");
    
        digitalWrite(ledLight, HIGH);    // turn on light to indicate chocolate is dispensed
//        Serial.println("\nLed Light ON");
        delay(3000);
     
//        Serial.println("Stepper Start - Return to position zero");    
        digitalWrite(pwmChA, HIGH);   // enable power to stepper
        digitalWrite(pwmChB, HIGH);   // enable power to stepper
        myStepper.step(-80);          // step backward 80 steps to position 0
        digitalWrite(pwmChA, LOW);    // disable power to stepper
        digitalWrite(pwmChB, LOW);    //disable power to stepper
//        Serial.println("Stepper Stop");
        
        digitalWrite(pButton2, LOW);   // initialize pin 5 as LOW (pin voltage less than 1.5V)
//        Serial.println("\nReset Button 2 - PIN 5 - Low");
        digitalWrite(ledLight, LOW);   // turns off light to indicate the sequence is completed
//        Serial.println("\nLed Light OFF");
    
        pButtonFlag=0;   // changes pButton2Flag value back to zero (0)
//        Serial.println("\Button 2 Flag = 0");
        delay(2000); 
    }
       
    // position 3
    if (pButton3State == HIGH) {
//       Serial.println("\nPush Button 3 Pressed");
       pButtonFlag=1;   // change pButtonFlag variable
//       Serial.println("Button 3 flag = 1");
    }
       if (pButtonFlag == 1){
//          Serial.println("Stepper Start - Forward 120 steps");
          digitalWrite(pwmChA, HIGH);   // enable power to stepper
          digitalWrite(pwmChB, HIGH);   // enable power to stepper
          myStepper.step(120);          // step forward 120 steps to position 3
          digitalWrite(pwmChA, LOW);    // disable power to stepper
          digitalWrite(pwmChB, LOW);    //disable power to stepper
//          Serial.println("Stepper Stop");
          delay(2000);
          
          myServoFlag=1;   // change ServoFlag variable to dispense chocolate
          Serial.println("\nServo Flag = 1 - Dispense Chocolate");
    
          if (myServoFlag == 1){
//            Serial.println("Servo Start");
             myServo.attach(srvoMtr);   // attaches the servo library to pin 10
//             Serial.println("Attach Servo Library to PIN 10");
           
             for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
                 myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
                 delay(15);                    // waits 3 sec for the servo to reach the position
             }
             myServo.detach();   // detaches the servo library from pin 10   
//             Serial.println("\nDetach Servo Library to PIN 10");
//             Serial.println("Servo Stop");
//             Serial.println("Hold position OPEN for 2 sec");
             delay(2000);
           
             myServo.attach(srvoMtr);   // attaches the servo library to pin 10
//             Serial.println("Attach Servo Library to PIN 10");
           
             for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
               myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
               delay(15);
             }
             myServo.detach();   // detaches the servo library from pin 10   
//             Serial.println("\nDetach Servo Library to PIN 10");
//             Serial.println("Servo Stop - Awaiting next selection");
          }    
          myServoFlag=0;                // changes myServoFlag value back to zero (0)     
//          Serial.println("Servo Flag = 0");
    
          digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed
//          Serial.println("\nLed Light ON");
          delay(3000);
     
//          Serial.println("Stepper Start - Return to position zero");    
          digitalWrite(pwmChA, HIGH);   // enable power to stepper
          digitalWrite(pwmChB, HIGH);   // enable power to stepper
          myStepper.step(-120);         // step backward 120 steps to position 0
          digitalWrite(pwmChA, LOW);    // disable power to stepper
          digitalWrite(pwmChB, LOW);    // disable power to stepper
//          Serial.println("Stepper Stop");
        
          digitalWrite(pButton3, LOW);   // initialize pin 6 as LOW (pin voltage less than 1.5V)
//          Serial.println("\nReset Button 3 - PIN 6 - Low");
          digitalWrite(ledLight, LOW);   // turns off light to indicate the sequence is completed
//          Serial.println("\nLed Light OFF");
    
          pButtonFlag=0;   // changes pButton3Flag value back to zero (0)
//          Serial.println("\Button 3 Flag = 0");
          delay(2000); 
     }
    // position 4
    if (pButton4State == HIGH) {
//       Serial.println("\nPush Button 4 Pressed");
       pButtonFlag=1;   // change pButtonFlag variable
//       Serial.println("Button 3 flag = 1");
    }
       if (pButtonFlag == 1){
//          Serial.println("Stepper Start - Forward 160 steps");
          digitalWrite(pwmChA, HIGH);   // enable power to stepper
          digitalWrite(pwmChB, HIGH);   // enable power to stepper
          myStepper.step(160);          // step forward 160 steps to position 3
          digitalWrite(pwmChA, LOW);    // disable power to stepper
          digitalWrite(pwmChB, LOW);    //disable power to stepper
//          Serial.println("Stepper Stop");
          delay(2000);
          
          myServoFlag=1;   // change ServoFlag variable to dispense chocolate
//          Serial.println("\nServo Flag = 1 - Dispense Chocolate");
    
          if (myServoFlag == 1){
//             Serial.println("Servo Start");
             myServo.attach(srvoMtr);   // attaches the servo library to pin 10
//             Serial.println("Attach Servo Library to PIN 10");
           
             for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
                 myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
                 delay(15);                    // waits 3 sec for the servo to reach the position
             }
             myServo.detach();   // detaches the servo library from pin 10   
//             Serial.println("\nDetach Servo Library to PIN 10");
//             Serial.println("Servo Stop");
//             Serial.println("Hold position OPEN for 2 sec");
             delay(2000);
           
             myServo.attach(srvoMtr);   // attaches the servo library to pin 10
//             Serial.println("Attach Servo Library to PIN 10");
           
             for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
               myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
               delay(15);
             }
             myServo.detach();   // detaches the servo library from pin 10   
//             Serial.println("\nDetach Servo Library to PIN 10");
//             Serial.println("Servo Stop - Awaiting next selection");
          }    
          myServoFlag=0;   // changes myServoFlag value back to zero (0)     
//          Serial.println("Servo Flag = 0");
    
          digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed
//          Serial.println("\nLed Light ON");
          delay(3000);
     
//          Serial.println("Stepper Start - Return to position zero");    
          digitalWrite(pwmChA, HIGH);   // enable power to stepper
          digitalWrite(pwmChB, HIGH);   // enable power to stepper
          myStepper.step(-160);         // step backward 160 steps to position 0
          digitalWrite(pwmChA, LOW);    // disable power to stepper
          digitalWrite(pwmChB, LOW);    // disable power to stepper
//          Serial.println("Stepper Stop");
        
          digitalWrite(pButton3, LOW);   // initialize pin 6 as LOW (pin voltage less than 1.5V)
//          Serial.println("\nReset Button 3 - PIN 6 - Low");
          digitalWrite(ledLight, LOW);   // turns off light to indicate the sequence is completed
//          Serial.println("\nLed Light OFF");
    
          pButtonFlag=0;   // changes pButton3Flag value back to zero (0)
//          Serial.println("\Button 4 Flag = 0");
          delay(2000);          
       }
}  

I'm including the "midi();" function to play a short melody through an attached Piezo speaker (buzzer) once the led is activated.

When I compile the midi code on its own in a separate sketch it works (see below).

int tonePin = 1;
void setup() {
 midi ();
}
 
void midi() {
    tone(tonePin, 233, 203.992851562);
    delay(226.658723958);
    delay(4.82252604167);
    tone(tonePin, 184, 412.325976562);
    delay(458.139973958);
    delay(4.82252604167);
    tone(tonePin, 184, 99.8262890625);
    delay(110.918098958);
    delay(4.82252604167);
    tone(tonePin, 155, 99.8262890625);
    delay(110.918098958);
    delay(4.82252604167);
    tone(tonePin, 184, 203.992851562);
    delay(226.658723958);
    delay(4.82252604167);
    tone(tonePin, 184, 203.992851562);
    delay(226.658723958);
    delay(236.303776042);
    tone(tonePin, 184, 99.8262890625);
    delay(110.918098958);
    delay(4.82252604167);
    tone(tonePin, 155, 99.8262890625);
    delay(110.918098958);
    delay(4.82252604167);
    tone(tonePin, 184, 203.992851562);
    delay(226.658723958);
    delay(4.82252604167);
    tone(tonePin, 184, 203.992851562);
    delay(226.658723958);
    delay(236.303776042);
    tone(tonePin, 184, 203.992851562);
    delay(226.658723958);
    delay(236.303776042);
    tone(tonePin, 233, 555.555);
   
   }

void loop() {
  // put your main code here, to run repeatedly:

}
Source Link
Stevie_D
  • 11
  • 1
  • 3

exit status 1 - expected primary-expression before '(' token

When I try to compile the following sketch, the compiler returns the error "exit status 1 - expected primary-expression before '(' token", and highlights "midi();" in my code.

Here is my sketch:

========================================== #include <Stepper.h> #include <Servo.h> #include <MIDI.h>

/*ARDUINO MOTOR SHIELD

  • The pin breakdown is as follows:
  • Function Channel A Channel B
  • Direction Digital 12 Digital 13
  • Speed (PWM) Digital 3 Digital 11
  • Brake Digital 9 Digital 8
  • Current Sensing Analog 0 Analog 1 */

const int stepsPerRevolution = 200; // 1.8 deg. step angle(200 steps/360 deg. rev) const int dirChA = 12; // assigning name "dirChA" to pin 12 const int dirChB = 13; // assigning name "dirChB" to pin 13 const int pwmChA = 3; // assigning name "pwmChA" to pin 3 const int pwmChB = 11; // assigning name "pwmChB" to pin 11 const int brkChA = 9; // assigning name "brkChA" to pin 9 const int brkChB = 8; // assigning name "brkChB" to pin 8

const int srvoMtr = 10; // assigning name "srvoMtr" to pin 10

const int pButton1 = 4; // assigning name "pButton1" to pin 4 const int pButton2 = 5; // assigning name "pButton2" to pin 5 const int pButton3 = 6; // assigning name "pButton3" to pin 6 const int pButton4 = 7; // assigning name "pButton4" to pin 7

const int ledLight = 2; // assigning name "ledLight" to pin 2

const int tonePin = 1; // assigning name "tonePin" to pin 1

Stepper myStepper(stepsPerRevolution, dirChA, dirChB); // initialize the stepper library on pins 12 & 13 Servo myServo; // initialize the servo library to logical name myServo

int pButton1State = 0; // variable for reading the pButton1 state as LOW or HIGH int pButton2State = 0; // variable for reading the pButton2 state as LOW or HIGH int pButton3State = 0; // variable for reading the pButton3 state as LOW or HIGH int pButton4State = 0; // variable for reading the pButton4 state as LOW or HIGH

int pButtonFlag = 0; // variable for when button 1 has been pressed and released

int myServoPos = 0; // variable for when servo has reached it's position int myServoFlag = 0; // variable for servo when any of the 4 pButton are pressed

void setup() { //Serial.begin(31250); // initialize the serial port for messaging & troubleshooting //Serial.println("Running UNO Setup");

// 1 Stepper Motor // Serial.println("\nStepper Motor"); pinMode(dirChA, OUTPUT); // initialize pin 12 as an OUTPUT digitalWrite(dirChA, LOW); //initialize pin 12 as LOW (pin voltage is 0 V) // Serial.println("Channel A Dir - PIN 12 - set as Output & Low"); pinMode(dirChB, OUTPUT); // initialize pin 13 as an OUTPUT digitalWrite(dirChB, LOW); //intialize pin 13 as LOW (pin voltage is 0 V) // Serial.println("Channel B Dir - PIN 13 - set as Output & Low"); pinMode(pwmChA, OUTPUT); // initialize pin 3 as an OUTPUT digitalWrite(pwmChA, LOW); //intialize pin 3 as LOW (pin voltage is 0 V) // Serial.println("Channel A PWM - PIN 3 - set as Output & Low"); pinMode(pwmChB, OUTPUT); // initialize pin 11 as an OUTPUT digitalWrite(pwmChB, LOW); //intialize pin 11 as LOW (pin voltage is 0 V) // Serial.println("Channel B PWM - PIN 11 - set as Output & Low"); pinMode(brkChA, OUTPUT); // initialize pin 9 as an OUTPUT digitalWrite(brkChA, LOW); //intialize pin 9 as LOW (pin voltage is 0 V) // Serial.println("Channel A Brake - PIN 9 - set as Output & Low"); pinMode(brkChB, OUTPUT); // initialize pin 8 as an OUTPUT digitalWrite(brkChB, LOW); //intialize pin 8 as LOW (pin voltage is 0 V) // Serial.println("Channel B Brake - PIN 8 - set as Output & Low");

myStepper.setSpeed(60); // set the speed of the stepper motor to 60 RPM // Serial.println("\nSet Stepper Speed to 60 RPM");

// 4 Push Buttons // Serial.println("\n4 Push Buttons"); pinMode(pButton1, INPUT); // initialize pin 4 as an INPUT digitalWrite(pButton1, LOW); // initialize pin 4 as LOW (pin voltage less than 1.5V) // Serial.println("Push Button 1 - PIN 4 - set a Input & Low"); pinMode(pButton2, INPUT); // initialize pin 5 as an INPUT digitalWrite(pButton2, LOW); // initialize pin 5 as LOW (pin voltage less than 1.5V) // Serial.println("Push Button 2 - PIN 5 - set a Input & Low"); pinMode(pButton3, INPUT); // initialize pin 6 as an INPUT digitalWrite(pButton3, LOW); // initialize pin 6 as LOW (pin voltage less than 1.5V) // Serial.println("Push Button 3 - PIN 6 - set a Input & Low"); pinMode(pButton4, INPUT); // initialize pin 7 as an INPUT digitalWrite(pButton4, LOW); // initialize pin 7 as LOW (pin voltage less than 1.5V) // Serial.println("Push Button 4 - PIN 7 - set a Input & Low");

// 1 Led Light // Serial.println("\nLED Light"); pinMode(ledLight, OUTPUT); // initialize pin 2 as an OUTPUT digitalWrite(ledLight, LOW); // initialize pin 2 as LOW (pin voltage is 0 V) // Serial.println("LED Light - PIN 2 - set to Output & Low");

// 1 Piezo Speaker midi(); // Serial.println("Piezo Speaker Inialized"); }

void loop() { //Read button state (pressed or not pressed?) // Serial.println("\nReading button 1 thru 4 states - high or low"); pButton1State = digitalRead(pButton1); // read the state of pButton1 as LOW or HIGH pButton2State = digitalRead(pButton2); // read the state of pButton2 as LOW or HIGH pButton3State = digitalRead(pButton3); // read the state of pButton3 as LOW or HIGH pButton4State = digitalRead(pButton4); // read the state of pButton4 as LOW or HIGH

// check if the pushbutton is pressed. If it is, the pbuttonState is HIGH: if (pButton1State == HIGH) { // Serial.println("\nPush Button 1 Pressed"); pButtonFlag=1; // change pButton1Flag variable // Serial.println("Button 1 flag = 1"); } if (pButtonFlag == 1){ // Serial.println("Stepper Start - Forward 40 steps"); digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(40); // step forward 40 steps to position 1 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop"); delay(2000);

    myServoFlag=1;             // change ServoFlag variable to dispense chocolate

// Serial.println("\nServo Flag = 1 - Dispense Chocolate");

    if (myServoFlag == 1){

// Serial.println("Servo Start"); myServo.attach(srvoMtr); // attaches the servo library to pin 10 // Serial.println("Attach Servo Library to PIN 10");

       for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
           myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
           delay(15);                    // waits 3 sec for the servo to reach the position
       }
       myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop"); // Serial.println("Hold position OPEN for 3 sec"); delay(2000);

       myServo.attach(srvoMtr);   // attaches the servo library to pin 10

// Serial.println("Attach Servo Library to PIN 10");

       for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
           myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
           delay(15);
       }
       myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop - Awaiting next selection"); }
myServoFlag=0; // changes myServoFlag value back to zero (0)
// Serial.println("Servo Flag = 0");

    digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed

// Serial.println("\nLed Light ON"); // Serial.println("\nPlay Tones");

    void midi() {
             tone(tonePin, 233, 203.992851562);
             delay(226.658723958);
             delay(4.82252604167);
             tone(tonePin, 184, 412.325976562);
             delay(458.139973958);
             delay(4.82252604167);
             tone(tonePin, 184, 99.8262890625);
             delay(110.918098958);
             delay(4.82252604167);
             tone(tonePin, 155, 99.8262890625);
             delay(110.918098958);
             delay(4.82252604167);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(4.82252604167);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(236.303776042);
             tone(tonePin, 184, 99.8262890625);
             delay(110.918098958);
             delay(4.82252604167);
             tone(tonePin, 155, 99.8262890625);
             delay(110.918098958);
             delay(4.82252604167);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(4.82252604167);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(236.303776042);
             tone(tonePin, 184, 203.992851562);
             delay(226.658723958);
             delay(236.303776042);
             tone(tonePin, 233, 555.555);
             }

    delay(3000);
 

// Serial.println("Stepper Start - Return to position zero");
digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(-40); // step backward 40 steps to position 0 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop");

    digitalWrite(pButton1, LOW);   // initialize pin 4 as LOW (pin voltage less than 1.5V)

// Serial.println("\nReset Button 1 - PIN 4 - Low"); digitalWrite(ledLight, LOW); //turns off light to indicate the sequence is completed // Serial.println("\nLed Light OFF");

    pButtonFlag=0;                // changes pButtonFlat value back to zero (0)

// Serial.println("\Button 1 Flag = 0"); delay(2000); }

// position 2 if (pButton2State == HIGH) { // Serial.println("\nPush Button 2 Pressed"); pButtonFlag=1; // change pButtonFlag variable // Serial.println("Button 2 flag = 1"); } if (pButtonFlag == 1){ // Serial.println("Stepper Start - Forward 80 steps"); digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(80); // step forward 80 steps to position 2 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop"); delay(2000);

    myServoFlag=1;    // change ServoFlag variable to dispense chocolate

// Serial.println("\nServo Flag = 1 - Dispense Chocolate");

    if (myServoFlag == 1){

// Serial.println("Servo Start"); myServo.attach(srvoMtr); // attaches the servo library to pin 10 // Serial.println("Attach Servo Library to PIN 10");

       for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
           myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
           delay(15);                    // waits 3 sec for the servo to reach the position
       }
       myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop"); // Serial.println("Hold position OPEN for 2 sec"); delay(2000);

       myServo.attach(srvoMtr);   // attaches the servo library to pin 10

// Serial.println("Attach Servo Library to PIN 10");

       for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
           myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
           delay(15);
       }
       myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop - Awaiting next selection"); }
myServoFlag=0; // changes myServoFlag value back to zero (0)
// Serial.println("Servo Flag = 0");

    digitalWrite(ledLight, HIGH);    // turn on light to indicate chocolate is dispensed

// Serial.println("\nLed Light ON"); delay(3000);

// Serial.println("Stepper Start - Return to position zero");
digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(-80); // step backward 80 steps to position 0 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop");

    digitalWrite(pButton2, LOW);   // initialize pin 5 as LOW (pin voltage less than 1.5V)

// Serial.println("\nReset Button 2 - PIN 5 - Low"); digitalWrite(ledLight, LOW); // turns off light to indicate the sequence is completed // Serial.println("\nLed Light OFF");

    pButtonFlag=0;   // changes pButton2Flag value back to zero (0)

// Serial.println("\Button 2 Flag = 0"); delay(2000); }

// position 3
if (pButton3State == HIGH) {

// Serial.println("\nPush Button 3 Pressed"); pButtonFlag=1; // change pButtonFlag variable // Serial.println("Button 3 flag = 1"); } if (pButtonFlag == 1){ // Serial.println("Stepper Start - Forward 120 steps"); digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(120); // step forward 120 steps to position 3 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop"); delay(2000);

      myServoFlag=1;   // change ServoFlag variable to dispense chocolate
      Serial.println("\nServo Flag = 1 - Dispense Chocolate");

      if (myServoFlag == 1){

// Serial.println("Servo Start"); myServo.attach(srvoMtr); // attaches the servo library to pin 10 // Serial.println("Attach Servo Library to PIN 10");

         for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
             myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
             delay(15);                    // waits 3 sec for the servo to reach the position
         }
         myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop"); // Serial.println("Hold position OPEN for 2 sec"); delay(2000);

         myServo.attach(srvoMtr);   // attaches the servo library to pin 10

// Serial.println("Attach Servo Library to PIN 10");

         for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
           myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
           delay(15);
         }
         myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop - Awaiting next selection"); }
myServoFlag=0; // changes myServoFlag value back to zero (0)
// Serial.println("Servo Flag = 0");

      digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed

// Serial.println("\nLed Light ON"); delay(3000);

// Serial.println("Stepper Start - Return to position zero");
digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(-120); // step backward 120 steps to position 0 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); // disable power to stepper // Serial.println("Stepper Stop");

      digitalWrite(pButton3, LOW);   // initialize pin 6 as LOW (pin voltage less than 1.5V)

// Serial.println("\nReset Button 3 - PIN 6 - Low"); digitalWrite(ledLight, LOW); // turns off light to indicate the sequence is completed // Serial.println("\nLed Light OFF");

      pButtonFlag=0;   // changes pButton3Flag value back to zero (0)

// Serial.println("\Button 3 Flag = 0"); delay(2000); } // position 4 if (pButton4State == HIGH) { // Serial.println("\nPush Button 4 Pressed"); pButtonFlag=1; // change pButtonFlag variable // Serial.println("Button 3 flag = 1"); } if (pButtonFlag == 1){ // Serial.println("Stepper Start - Forward 160 steps"); digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(160); // step forward 160 steps to position 3 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); //disable power to stepper // Serial.println("Stepper Stop"); delay(2000);

      myServoFlag=1;   // change ServoFlag variable to dispense chocolate

// Serial.println("\nServo Flag = 1 - Dispense Chocolate");

      if (myServoFlag == 1){

// Serial.println("Servo Start"); myServo.attach(srvoMtr); // attaches the servo library to pin 10 // Serial.println("Attach Servo Library to PIN 10");

         for (myServoPos = 0; myServoPos <= 100; myServoPos += 1) { // goes from 0 degrees to 100 degrees in steps of 5 degrees
             myServo.write(myServoPos);    // tell servo to go to position in variable 'myServoPos'
             delay(15);                    // waits 3 sec for the servo to reach the position
         }
         myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop"); // Serial.println("Hold position OPEN for 2 sec"); delay(2000);

         myServo.attach(srvoMtr);   // attaches the servo library to pin 10

// Serial.println("Attach Servo Library to PIN 10");

         for (myServoPos = 100; myServoPos >= 0; myServoPos -= 1) { // goes from 100 degrees to 0 degrees in steps of 1 degree
           myServo.write(myServoPos);    // tell servo to go to position in variable 'pos
           delay(15);
         }
         myServo.detach();   // detaches the servo library from pin 10   

// Serial.println("\nDetach Servo Library to PIN 10"); // Serial.println("Servo Stop - Awaiting next selection"); }
myServoFlag=0; // changes myServoFlag value back to zero (0)
// Serial.println("Servo Flag = 0");

      digitalWrite(ledLight, HIGH);   // turn on light to indicate chocolate is dispensed

// Serial.println("\nLed Light ON"); delay(3000);

// Serial.println("Stepper Start - Return to position zero");
digitalWrite(pwmChA, HIGH); // enable power to stepper digitalWrite(pwmChB, HIGH); // enable power to stepper myStepper.step(-160); // step backward 160 steps to position 0 digitalWrite(pwmChA, LOW); // disable power to stepper digitalWrite(pwmChB, LOW); // disable power to stepper // Serial.println("Stepper Stop");

      digitalWrite(pButton3, LOW);   // initialize pin 6 as LOW (pin voltage less than 1.5V)

// Serial.println("\nReset Button 3 - PIN 6 - Low"); digitalWrite(ledLight, LOW); // turns off light to indicate the sequence is completed // Serial.println("\nLed Light OFF");

      pButtonFlag=0;   // changes pButton3Flag value back to zero (0)

// Serial.println("\Button 4 Flag = 0"); delay(2000); } }

I'm including the "midi();" function to play a short melody through an attached Piezo speaker (buzzer) once the led is activated.

When I compile the midi code on its own in a separate sketch it works (see below).

int tonePin = 1; void setup() { midi (); }

void midi() { tone(tonePin, 233, 203.992851562); delay(226.658723958); delay(4.82252604167); tone(tonePin, 184, 412.325976562); delay(458.139973958); delay(4.82252604167); tone(tonePin, 184, 99.8262890625); delay(110.918098958); delay(4.82252604167); tone(tonePin, 155, 99.8262890625); delay(110.918098958); delay(4.82252604167); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(4.82252604167); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(236.303776042); tone(tonePin, 184, 99.8262890625); delay(110.918098958); delay(4.82252604167); tone(tonePin, 155, 99.8262890625); delay(110.918098958); delay(4.82252604167); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(4.82252604167); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(236.303776042); tone(tonePin, 184, 203.992851562); delay(226.658723958); delay(236.303776042); tone(tonePin, 233, 555.555);

}

void loop() { // put your main code here, to run repeatedly:

}

I've searched the Internet for an answer, but have found none that relate directly with what I'm attempting to make work. Can you help me, please?