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.
Dependencies: mbed
Diff: main.cpp
- Revision:
- 0:602adf33625c
- Child:
- 1:127786980842
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sun Feb 11 23:55:14 2018 +0000
@@ -0,0 +1,87 @@
+#include "mbed.h"
+// pull up
+
+InterruptIn buttonPlus(PA_0); // deffition of interrupt
+InterruptIn buttonMinus(PA_1); // deffition of interrupt
+
+PwmOut PWM(PA_8); // definition of PWM pin
+
+Timer tim; // Timer definition
+
+Ticker tick;
+
+bool autoIncrement=false;
+bool plus=true;
+
+void pressedPlus() {
+ tim.start(); // start Timer
+ plus=true;
+ if (PWM.read()+0.01 <= 1) {
+ PWM.write(PWM.read()+0.01);
+ printf("Presed plus button. DC: %f.\n",PWM.read());
+ }else{
+ PWM.write(1);
+ printf("Presed plus button. Already maximum DC.\n");
+ }
+}
+
+void releasedPlus(){
+ tim.stop();
+ tim.reset();
+ autoIncrement=false;
+ printf("Plus button released.\n");
+}
+
+void pressedMinus() {
+ tim.start(); // start Timer
+ plus=false;
+ if (PWM.read()-0.01 >= 0) {
+ PWM.write(PWM.read()-0.01);
+ printf("Presed minus button. DC: %f\n",PWM.read());
+ }else{
+ PWM.write(0);
+ printf("Presed minus button. Already minimum DC.\n");
+ }
+}
+
+void releasedMinus(){
+ tim.stop();
+ tim.reset();
+ autoIncrement=false;
+ printf("Minus button released.\n");
+}
+
+void checkTimer(){
+ if(tim.read_ms()>1000){
+ tim.stop();
+ autoIncrement=true;
+ }
+}
+
+int main()
+{
+
+ // Set PWM
+ PWM.period_ms(2); // 500 Hz
+ PWM.write(0); // duration of active pulse
+
+ // Set button interrupt
+ buttonPlus.fall(&pressedPlus);
+ buttonMinus.fall(&pressedMinus);
+ buttonPlus.rise(&releasedPlus);
+ buttonMinus.rise(&releasedMinus);
+
+ tick.attach(&checkTimer,0.01);
+
+ while (1) {
+ if(autoIncrement && plus && PWM.read()+0.01 <= 1){
+ PWM.write(PWM.read()+0.01);
+ printf("Autoincrement. DC: %f.\n",PWM.read());
+ }
+ else if(autoIncrement && !plus && PWM.read()-0.01 >= 0){
+ PWM.write(PWM.read()-0.01);
+ printf("Autodecrement. DC: %f.\n",PWM.read());
+ }
+ wait_ms(500);
+ }
+}