Zdravím,
používám RTC modul DS1307 a H můstek L293D.
Zvlášť tyto komponenty fungují bez problému, ale jakmile se snažím dát do jednoho programu, tak se program zasekne. Snažím se s motorkem pohybovat dopředu mezi 20 a 30 sekundami a dozadu mezi 40 a 50 sekundami. Motorek se v daném okamžiku roztočí, ale v sériovém monitoru sekundy přestanou počítat, tzn. se pak točí pořád. Prosím o radu. Děkuji.
#include <Wire.h>
#include "RTClib.h"
const byte IC_INPUT_1 = 3; // connect IC Input1 to ~3
const byte IC_INPUT_2 = 2; // connect IC Input2 to 2
const byte IC_ENABLE_1 = 9; // connect IC Enable1 t ~9
byte motor_is_enabled = 0; // whether the motor is on/off
byte motor_direction = 0; // motor direction
// vytvoření instance DS1307 z knihovny RTClib
RTC_DS1307 DS1307;
int switchState = 0;
void setup() {
pinMode(IC_INPUT_1, OUTPUT);
pinMode(IC_INPUT_2, OUTPUT);
pinMode(IC_ENABLE_1, OUTPUT);
Serial.begin(9600);
DS1307.adjust(DateTime(2018, 6, 1, 18, 10, 11));
}
void loop() {
DateTime now = DS1307.now();
if (10 < now.second() && now.second() < 20) {
motor_is_enabled = 1;
motor_direction = 1;
}
else if (40 < now.second() && now.second() < 50) {
motor_is_enabled = 1;
motor_direction = 0;
}
else {
motor_is_enabled = 0;
}
if (motor_direction) {
digitalWrite(IC_INPUT_1, LOW);
digitalWrite(IC_INPUT_2, HIGH);
} else {
digitalWrite(IC_INPUT_1, HIGH);
digitalWrite(IC_INPUT_2, LOW);
}
int motor_speed = 320;
if (motor_is_enabled) {
analogWrite(IC_ENABLE_1, motor_speed);
} else {
analogWrite(IC_ENABLE_1, 0);
}
Serial.println(now.second());
}
RTC a ovládání motorku
Re: RTC a ovládání motorku
Už mi to funguje, stačilo zvětšit napájení můstku pro motorek. Téma už nejde vymazat?
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host