This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
notes:c4eng:fall2023:projects:ptb0 [2023/10/05 02:16] – [GPIO MODE SETTING] mwinter4 | notes:c4eng:fall2023:projects:ptb0 [2023/10/05 12:32] (current) – [CODING THE SPEAKER] acuno | ||
---|---|---|---|
Line 8: | Line 8: | ||
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. | 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==== | ====GPIO COMMAND-LINE TESTING==== | ||
+ | We can test our pin outputs directly from the command line, before writing code. | ||
- | =====SPEAKER | + | After identifying the pin number with <wrap hi>GPIO readall</ |
+ | =====SPEAKER===== | ||
- | Passive | + | Active |
+ | The long lead is the positive connection. | ||
+ | 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. | ||
transister 8050 | 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 " | ||
+ | |||
+ | =====CODING THE SPEAKER===== | ||
+ | The active speaker simply needs to be toggled on or off to work. | ||
+ | |||
+ | < | ||
+ | digitalWrite (GPIO_PIN, STATE) | ||
+ | </ | ||
+ | Where: | ||
+ | * GPIO_PIN = the wiringPi pin number or the name you declared for that pin | ||
+ | * STATE = HIGH or LOW to either enable or disable the GPIO_PIN | ||
+ | |||
+ | The passive speaker needs to also be given a tone, in Hz, to function. | ||
+ | |||
+ | < | ||
+ | softToneWrite (GPIO_PIN, TONE) | ||
+ | </ | ||
+ | Where: | ||
+ | * GPIO_PIN = the wiringPi pin number or the name you declared for that pin | ||
+ | * TONE = Frequencyof tone to use, or the name you declared for that variable | ||
====GPIO MODE SETTING==== | ====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). | 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). | ||
Line 19: | Line 44: | ||
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: | 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, | + | 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 <wrap hi> | ||
=====BUTTON==== | =====BUTTON==== | ||
The button itself be connected to a wire from the 3.3V pin through a 10k ohm resistor, | The button itself be connected to a wire from the 3.3V pin through a 10k ohm resistor, | ||
Line 29: | Line 61: | ||
< | < | ||
Then you can use an else, which will only take effect when the button is not being pushed. | 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: | ||
+ | < | ||
+ | functions when button is pressed} | ||
+ | else { | ||
+ | functions to do when button isnt pressed } </ | ||
Line 34: | Line 71: | ||
====VERIFYING CORRECT CIRCUIT CONNECTION==== | ====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). | ||