summaryrefslogtreecommitdiff
path: root/CODE/debug/prewk/motordriver/softPWM/softPWM.ino
diff options
context:
space:
mode:
authorrobosoccer <robosoccer@mendelcollege.nl>2025-03-20 12:06:06 +0100
committerrobosoccer <robosoccer@mendelcollege.nl>2025-03-20 12:06:06 +0100
commit7e9328765f41a6055a722285678bc6bc09963c07 (patch)
tree7e02d638585b455fcea38a8e88d5fc71c3fcd1ba /CODE/debug/prewk/motordriver/softPWM/softPWM.ino
parent2bcc96fb10a4a84a7e5537d1d3258a7f919b6917 (diff)
downloadrobotica-7e9328765f41a6055a722285678bc6bc09963c07.tar.gz
robotica-7e9328765f41a6055a722285678bc6bc09963c07.zip
update
Diffstat (limited to 'CODE/debug/prewk/motordriver/softPWM/softPWM.ino')
-rw-r--r--CODE/debug/prewk/motordriver/softPWM/softPWM.ino46
1 files changed, 46 insertions, 0 deletions
diff --git a/CODE/debug/prewk/motordriver/softPWM/softPWM.ino b/CODE/debug/prewk/motordriver/softPWM/softPWM.ino
new file mode 100644
index 0000000..ab74715
--- /dev/null
+++ b/CODE/debug/prewk/motordriver/softPWM/softPWM.ino
@@ -0,0 +1,46 @@
+#include <TimerThree.h>
+#include <Arduino.h>
+
+int pwmPin = 3;
+
+volatile int PWMval = 0; // PWM value 0-100
+
+void setup() {
+ pinMode(pwmPin, OUTPUT);
+ Serial.begin(9600);
+
+ Timer3.initialize(800); // 800 microseconds or 1.25kHz
+ Timer3.attachInterrupt(updatePWM);
+}
+
+void updatePWM() {
+ static int counter = 0;
+
+ if (counter < PWMval) {
+ digitalWrite(pwmPin, HIGH);
+ } else {
+ digitalWrite(pwmPin, LOW);
+ }
+
+ counter++;
+ if (counter >= 100) {
+ counter = 0;
+ }
+}
+
+void mcpsoftpwm(int value) {
+ if (value < 0) value = 0;
+ if (value > 100) value = 100;
+
+ Serial.print("softPWM pin: 3, value: ");
+ Serial.println(value);
+ PWMval = value;
+}
+
+void loop() {
+ mcpsoftpwm(100); // Set PWM to 100%
+ delay(1000);
+ mcpsoftpwm(50); // Set PWM to 50%
+ delay(1000);
+ Serial.println("loop");
+}