Go Down

Topic: problem: no audio output. programming problem. (Read 708 times) previous topic - next topic

makovanx


3 tact switch, 1st pin connected to 23, 24 and 25 while 2nd pin is connected to ground.
8 ohm speaker, negative in ground while positive pin is connected to pin 8.
all components are operational and fine.
i just have problems with the code and i dont know where i got wrong,..   :smiley-sad-blue:

Code: [Select]

#include "pitches.h"

byte button[] = {23, 24, 25};  //create array of buttons connected at pin 23, 24 and 25
byte speakerpin = 8;  //sets speaker pin to pin 8
byte buttonset ;  //variable for reading button push

void setup() {
  // set all pins to output
  pinMode(speakerpin, OUTPUT);
  for(int x=23; x<26; x++) {
    pinMode(button[x] , INPUT);
    digitalWrite(button[x] , HIGH); // buttons are in the high position
}
}

void loop(){
for(int x=23; x<26; x++){
  buttonset = digitalRead(button[x]);
   
      if(buttonset == LOW){
         if(x == 23){ // if button on pin 2 is pressed
    //        if (buttonset == LOW){
            tone(8, NOTE_C4);    //stores the note's wavelength to be played.
      //   }
       }
         if(x == 24){
    //        if (buttonset == LOW){
            tone(8, NOTE_D4);
      //   }
       }
         if(x == 25){
     //       if (buttonset == LOW){
            tone(8, NOTE_E4);
      //   }
       }
         else
            noTone(8);
      }
   } 
}

[/size]

PaulS

Code: [Select]
  for(int x=23; x<26; x++) {
    pinMode(button[x] , INPUT);

You are referencing the 23rd, 24th, and 25th elements of an array that has 3 elements. Not a good thing.

dxw00d

You risk damaging your Arduino connecting an 8 Ohm speaker to it without a series resistor.

makovanx

Code: [Select]

You are referencing the 23rd, 24th, and 25th elements of an array that has 3 elements. Not a good thing.


kind sir, can you suggest anything to correct this?

PaulS

Quote
can you suggest anything to correct this?

Sure. Use the correct value in the for loop.

You either want to set the pin whose number is x or the pin whose number is in the x position in the array.

For the former, loose the array.

For the latter, the proper range is x=0 to x<3.

makovanx

Code: [Select]
You risk damaging your Arduino connecting an 8 Ohm speaker to it without a series resistor.

thank you for the caution sir, i'm kind of new with arduino, my bad.
anyway, my supply is just 5 volts, what resistor value should i use?

makovanx

sir PaulS,

i have my ckt up and running now, thanks for the advice.
this proves my knowledge in C is still lacking, better study more.  XD

retrolefty


Code: [Select]
You risk damaging your Arduino connecting an 8 Ohm speaker to it without a series resistor.

thank you for the caution sir, i'm kind of new with arduino, my bad.
anyway, my supply is just 5 volts, what resistor value should i use?


At least a 120 ohms or more to stay below the 40ma absolute maximum current draw limit from an output pin. But keep in mind that means the resistor will 'consume' about 95% of the 'audio power' leaving a wimpy amount of about 13 milliwatts of audio power to drive the the 8 ohm speaker. You should look for a speaker with a much higher voice coil resistance or do as most anyone wanting to drive a 8 ohm speaker, use a audio amplifier stage or module to drive the speaker.

Lefty

makovanx

Code: [Select]
At least a 120 ohms or more to stay below the 40ma absolute maximum current draw limit from an output pin. But keep in mind that means the resistor will 'consume' about 95% of the 'audio power' leaving a wimpy amount of about 13 milliwatts of audio power to drive the the 8 ohm speaker. You should look for a speaker with a much higher voice coil resistance or do as most anyone wanting to drive a 8 ohm speaker, use a audio amplifier stage or module to drive the speaker.

thanks for the heads up sir,.. i will research and study about audio amplifier that you mentioned,..

Go Up