Vad är det jag inte fattar med millis();?

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();
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.