Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- YPROY
- Date:
- 2017-01-30
- Revision:
- 1:df2cee74ab8b
- Parent:
- 0:7a91558f8c41
- Child:
- 2:7aacbdf39425
File content as of revision 1:df2cee74ab8b:
//This software is derived from the example Nucleo_pwm.
//It outputs a PWM signal that is compatible with Tower Pro SG90 servos.
//It makes the servo move from one programmed position to another each time the
//user button is pressed.
//The programmed positions are defined by the values that are stored in
//the variable "pulseDurationInMicroSeconds".
//An index counter is used to select which value is to be used to set the pulse
//duration of the PWM signal that controls that servo.
//The value of this index counter is changed each time the user button is
//pressed and the changes are made in a way that makes the program repeatedly
//cycles through all the possible positions.
//It is just necessary to add values to "pulseDurationInMicroSeconds" to have
//the servo adopt more positions.
//Just connect the brown wire of a SG90 servo to GND, its red wire to AVDD and
//its the orange wire to D11 to have the SMT32-F401RE contol the servo.
//
#include "mbed.h"
#define NUMBER_OF_POSITIONS sizeof(pulseDurationInMicroSeconds)/sizeof(int)
#define PWM_PERIOD_FOR_SG90_IN_MS 20
DigitalOut userLED(LED1);
PwmOut towerProSG90(D11); //PA_7);
InterruptIn userButton(USER_BUTTON);
int index;
int pulseDurationInMicroSeconds[]={700, 1550, 2500, 1550};
void responseToUserButtonPressed(void)
{
index++;
if (index >= NUMBER_OF_POSITIONS)
{
index = 0;
}
towerProSG90.pulsewidth_us(pulseDurationInMicroSeconds[index]);
}
int main()
{
index = 0;
towerProSG90.period_ms(PWM_PERIOD_FOR_SG90_IN_MS);
towerProSG90.pulsewidth_us(pulseDurationInMicroSeconds[index]);
userButton.fall(&responseToUserButtonPressed);
while(1)
{
userLED = !userLED;
wait(1);
}
}