Table of Contents

PTB0

LED

The RED and GREEN LED's have to have 3.3V, 220ohm resistors, and be grounded.

GPIO MODE SETTING

The GPIO mode setting you have plays a critical role in making sure the circuit functions properly. Using commands such as gpio mode (WPI) in/out will control whether or pin is an input or output. gpio write (WPI) 0/1 will control if the pin you select receives voltage. 0 being none, 1 meaning it will receive voltage.

GPIO COMMAND-LINE TESTING

We can test our pin outputs directly from the command line, before writing code.

After identifying the pin number with GPIO readall, we can then use commands such as GPIO mode PIN# OUTPUT and GPIO write PIN# 1 and observe the result on our circuit. If we set the GPIO pin connected to our red LED to high, and the red LED doesn't turn on, we know something is wrong.

SPEAKER

Active speaker has one leg longer than the other. It also has a closed bottom while the active speaker has an open bottom. The long lead is the positive connection. The active speaker behaves in an on or off state. The tone cannot be altered.

For this project, the intent is to use a passive speaker and alter the tone. The passive speaker has the green PCB on the bottom. Many folks had trouble with the passive speaker, so substituted with the active speaker. transister 8050

The transistor will be acting as a solenoid to control the continuity between the negative lead on the speaker, and ground. The reason we will be using the transistor to control ground is because the speaker needs 5 volts which can only come from the constant 5v pin. The output pin that controls speaker activation will be the “trigger wire” for the transistor to make continuity between the speaker and ground.

CODING THE SPEAKER

The active speaker simply needs to be toggled on or off to work.

digitalWrite (GPIO_PIN, STATE) 

Where:

The passive speaker needs to also be given a tone, in Hz, to function.

softToneWrite (GPIO_PIN, TONE)

Where:

GPIO MODE SETTING

To initialize our GPIO pins, we use the pinMode() function with the first argument being the pin number, and the second argument being the state (input or output).

As an example, to initialize the pin our red LED is on to OUTPUT, after we've defined REDLED as the corresponding pin number, we would do this:

pinMode (REDLED, OUTPUT); 

We also want to initialize our inputs, which has already been done for us in this snippet here:

 
pinMode (BUTTON, INPUT); 

Underneath that we find pullUpDnControl(). We don't need to worry about this, but this essentially allows our input to be accurate. Without this, we may not detect input from the button properly.

BUTTON

The button itself be connected to a wire from the 3.3V pin through a 10k ohm resistor, a wire from a gpio pin through a 10k ohm resistor, and a wire leading to the ground pin. In the code, define the button according to the GPIO pin its connected to. The following code will be used if its connected to GPIO5:

#define BUTTON       21

The button should already be set to input in the code because when you are pressing the button, you are inputting information into the program. The state of the button should already be defined in the code to rely on whether the button is being pushed or not.

state     = digitalRead (BUTTON);

if you wanted to make an if statement that is in effect when the button is being pushed, you can use the following:

if (state  == LOW) { 

Then you can use an else, which will only take effect when the button is not being pushed. The entire outline of the code should look like:

 if (state == LOW){
functions when button is pressed}
else {
functions to do when button isnt pressed } 

GPIO MODE SETTING

VERIFYING CORRECT CIRCUIT CONNECTION

At every stage of building our circuit, it's useful to make sure that things are hooked up properly before writing our code.

One example of this would be plugging our LEDs to 3.3v instead of a GPIO pin, just to make sure they turn on.

We can also make sure our buzzer works by connecting the middle leg of the transistor to 3.3v (with the correct resistor in our circuit).