håller på med ett litet projekt där jag vill köra en stegmotor 1/8 dels varv var 3,5h sen ett uppehåll på 10h. med koden jag har så går den varje sekund... eller den räknar lcd.print(time++); varje sekund fast den borde göra det var 5e sekund (//3,5h). det finns det en realtids tempgivare med i bilden oxå den funkar som jag tänkt.
har kört huvudet i väggen för länge nu för att inte fråga om hjälp... ska tillägga att detta är bland mina första seriösa försök med en arduino som grund
unsigned long lastExecutedMillis = 0; // vairable to save the last executed time
#include <OneWire.h>
#include <LiquidCrystal.h>
#include <DallasTemperature.h>
#include <Stepper.h>
#define ONE_WIRE_BUS 13
#define EXE_INTERVAL_1 1000
#define EXE_INTERVAL_2 5000 //12600000
#define EXE_INTERVAL_3 10000 //36000000
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal lcd(2,3,4,5,6,7);
float tempC = 0;
unsigned long lastExecutedMillis_1 = 0; // vairable to save the last executed time for code block 1
unsigned long lastExecutedMillis_2 = 0; // vairable to save the last executed time for code block 2
unsigned long lastExecutedMillis_3 = 0; // vairable to save the last executed time for code block 3
// Define number of steps per rotation:
const int stepsPerRevolution = 942;
// Create stepper object called 'revolver', note the 6+/pin order:
Stepper revolver = Stepper(stepsPerRevolution, 9, 11, 10, 12);
int time = 0;
void setup() {
sensors.begin();
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Cubes");
lcd.setCursor(11,0);
lcd.print("of 28");
revolver.setSpeed(50); // Set the speed to 5 rpm:
pinMode(3, OUTPUT);
analogWrite(3, 0);
Serial.begin(9600);
time = 1;
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - lastExecutedMillis_1 >= EXE_INTERVAL_1)
lastExecutedMillis_1 = currentMillis; // save the last executed time
sensors.requestTemperatures();
tempC = sensors.getTempCByIndex(0);
//tempF = sensors.toFahrenheit(tempC);
millis();
Serial.println(tempC);
lcd.setCursor(5,1); //set cursor to center line #2
lcd.print(tempC); lcd.print((char)223); lcd.print("C"); //lcd.setCursor(0,1);//lcd.print(tempC); lcd.print(""); lcd.print("C");
// Step one revolution in one direction:
//Serial.println("clockwise");
revolver.step(stepsPerRevolution);
if (currentMillis - lastExecutedMillis_2 >= EXE_INTERVAL_2)
lastExecutedMillis_2 = currentMillis; // save the last executed time
lcd.setCursor(6,0); //set cursor to center line #1
lcd.print(time++); //print nubers used
millis();
//delay(5000);
//Serial.println("clockwise");
revolver.step(stepsPerRevolution);
if (currentMillis - lastExecutedMillis_2 >= EXE_INTERVAL_2)
lastExecutedMillis_2 = currentMillis; // save the last executed time
lcd.setCursor(6,0);
lcd.print(time++);
millis();
//delay(5000);
//Serial.println("clockwise");
revolver.step(stepsPerRevolution);
if (currentMillis - lastExecutedMillis_2 >= EXE_INTERVAL_2)
lastExecutedMillis_2 = currentMillis; // save the last executed time
lcd.setCursor(6,0);
lcd.print(time++);
millis();
//delay(5000);
//Serial.println("clockwise");
revolver.step(stepsPerRevolution);
if (currentMillis - lastExecutedMillis_3 >= EXE_INTERVAL_3)
lastExecutedMillis_3 = currentMillis; // save the last executed time
lcd.setCursor(6,0);
lcd.print(time++);
//delay(10000);
millis();
}