Me podrian ayudar hacer que un servomotor empieze en 0° espere 5 segundos gire a 90° y que sea un ciclo continuo utilizando la funcion de millis

#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <DHT.h>
#include <DHT_U.h>
#include <Servo.h>
#include <TinyGPS.h> //libreria gps
TinyGPS gps;
#include <SoftwareSerial.h>
SoftwareSerial serialgps(11, 10);
#include <SPI.h> //librerias sd
#include <SD.h> // librerias sd

#define DHTPIN 22 // El pin digital al que está conectado el sensor
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE); // Inicializa el objeto DHT
Servo servolive;
float humedad;
float temperatura;
float latitude;
char pulsacion; // almacena la tecla pulsada
int contador = 1; // cuenta el nivel del menu en el que se esta
const byte ROWS = 4; //Cuatro Filas
const byte COLS = 4; //Cuatro Columnas
int relay = 23;
int relay2= 24;
int relay3= 25;
unsigned int actual = 0;
unsigned int anterior = 0;
const int chipSelect = 53; // pin usado mega 53
int year;
byte month, day, hour, minute, second, hundredths; //variables para dias
unsigned long chars;
unsigned short sentences, failed_checksum;
bool guardarDatos = false;

char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'},
};
byte rowPins[ROWS] = {30,31,32,33}; //Puntos de conexion del teclado al arduino FILAS
byte colPins[COLS] = {34,35,36,37}; //Puntos de conexion del teclado al arduino COLUMNAS
Keypad Teclado1 = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //Configura el teclado
LiquidCrystal_I2C lcd(0x27,16,2); // dependiendo del fabricante del I2C el codigo 0x27 cambiar a
// 0x3F , 0x20 , 0x38 ,
////////////////////////////////// Void Setup() ///////////
void setup () {
lcd.init();
lcd.backlight();
pinMode(12, OUTPUT);
// muestra el intro de bienvenida
Serial.begin(9600); // Inicializa la comunicación serial
dht.begin(); // Inicializa el sensor DHT
servolive.attach(48);
pinMode(relay, OUTPUT);
pinMode(relay2,OUTPUT);
pinMode(relay3,OUTPUT);
anterior = millis();
Serial.begin(9600);

serialgps.begin(9600);

pinMode(chipSelect, OUTPUT);

Serial.print("Inicializando SD...");

// ver si la tarjeta se esta inicializando
if (!SD.begin(chipSelect)) {
Serial.println("Fallo o tarjeta no presente");
//si no pasa eso
return;
}
Serial.println("Tarjeta SD OK");

}

////////////////////////// Void loop() ///////////////////////
void loop() {
{humedad = dht.readHumidity();
Serial.print(humedad);
temperatura = dht.readTemperature();
Serial.print(",");
Serial.println(temperatura);
// Verifica si alguna lectura falló
if (isnan(humedad) || isnan(temperatura)) {
Serial.println("Error al leer el sensor DHT!");
return;
}
{

if (temperatura <30 ){
digitalWrite(relay, HIGH);
}
if (temperatura > 32){
digitalWrite(relay, LOW);
}

if (humedad > 75){
  digitalWrite (relay2 , LOW);
}
if (humedad < 76 ){
  digitalWrite ( relay2 , HIGH);
   }
digitalWrite (relay3 , LOW);}

{ actual= millis ();
if (actual - anterior >  8000){
  servolive.write(0);}
  if ( anterior - actual  < 5000){
 servolive.write(40);
}

}
String dataString = "";
while (serialgps.available()) {
int c = serialgps.read();
if (gps.encode(c)) {
float latitude, longitude;
gps.f_get_position(&latitude, &longitude);
gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths);
// Abre el archivo DATOSGPS.txt
//Solo puede haber un archivo abierto a la vez,
//por lo que hay que cerrar este si queremos utilizar otro //printDate

File dataFile = SD.open("DATOSGPS.txt", FILE_WRITE);

// Si el archivo existe, escribimos en el.

if (dataFile) {
  dataFile.print((millis() / 1000));
 dataFile.print(",");
 dataFile.println(dataString);
  dataFile.print("Latitud: ");

dataFile.print(latitude, 5);
dataFile.print(" ");
dataFile.print(",");
dataFile.print("Longitud: ");
dataFile.print(longitude, 5);
dataFile.print(" ");
dataFile.print(",");
dataFile.print("Velocidad en Km/Hr: ");
dataFile.print(gps.f_speed_kmph());
dataFile.print(" ");
dataFile.print(",");
dataFile.print("Satelites encontrados: ");
dataFile.print(gps.satellites());
dataFile.print(" ");
dataFile.print(",");
dataFile.print("Fecha: ");
dataFile.print(day, DEC);
dataFile.print(" ");
dataFile.print("/");
dataFile.print(month, DEC);
dataFile.print(" ");
dataFile.print("/");
dataFile.print(year, DEC);
dataFile.print(" ");
dataFile.print(",");
dataFile.print("Numero de dato");
dataFile.close();
guardarDatos = false;
Serial.println(dataString);
}
// Si el archivo no se abre imprimir:
else {
Serial.println("Error abriendo DATOSGPS.txt");
}

}}

pulsacion = Teclado1.getKey() ; // Lee la tecla pulsada
if (pulsacion != 0) {
lcd.clear();

}
if(contador == 5){ menu_5();accion_5();}
if(contador == 4){ menu_4();accion_4();}
if(contador == 3){ menu_3();accion_3();}
if(contador == 2){ menu_2();accion_2();}
if(contador == 1){ menu_1();accion_1();}

// Lee la humedad relativa y la temperatura en grados Celsius

}}

// Lee la humedad relativa y la temperatura en grados Celsius

void menu_1(){
lcd.setCursor(0,0);
lcd.print("Welcome");
lcd.setCursor(0,1);
lcd.print( "Operator");

lcd.setCursor(10,1);
lcd.print("MAS >*");
}
/////////////////////Accion 1 //////////////////////////////
void accion_1(){

if(pulsacion == '*') contador=2;
}
/////////////////////Menu_2 //////////////////////////////////
void menu_2(){
lcd.setCursor(0,0);
lcd.print("Humd >1 ");
lcd.setCursor(8,0);
lcd.print("Temp >2");
lcd.setCursor(0,1);
lcd.print("MENU >#");
lcd.setCursor(8,1);
lcd.print("GPS >3");
}
/////////////////////accion_2 //////////////////////////////////
void accion_2(){
if(pulsacion == '1') contador=3;
if(pulsacion == '2') contador=4;
if (pulsacion == '3') contador=5;
if(pulsacion == '#') contador=1;
}
/////////////////////Menu_3 //////////////////////////////////
void menu_3(){
lcd.setCursor(0,0);
lcd.print("Humd ");
lcd.setCursor(5,0);
lcd.print(humedad);
lcd.print(" %");
lcd.setCursor(0,1);
lcd.print("MENU># <--0");
}
/////////////////////accion_3 //////////////////////////////////
void accion_3(){
if(pulsacion == '#') contador=1;
if(pulsacion == '0') contador=2;
}
/////////////////////Menu_4 //////////////////////////////////
void menu_4(){

lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.setCursor(6,0);
lcd.print(temperatura);
lcd.print(" C");
lcd.setCursor(0,1);
lcd.print("MENU># <--0");
}
/////////////////////accion_4 //////////////////////////////////
void accion_4(){
if(pulsacion == '#') contador=1;
if(pulsacion == '0') contador=2;
}
void menu_5(){

lcd.setCursor(0,0);
lcd.print("LAT ");
lcd.setCursor(4,0);
lcd.print(latitude);

lcd.setCursor(0,1);
lcd.print("MENU># <--0");
}
/////////////////////accion_4 //////////////////////////////////
void accion_5(){
if(pulsacion == '#') contador=1;
if(pulsacion == '0') contador=2;
}

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español @nickmg1973.

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

muchas gracias

1 Like

Moderador
Muchas gracias no. Lee las normas del foro y edita tu posteo adecuadamente.

  1. Comienza editando el titulo y coloca algo adecuado.
  2. Pasa todo el titulo que tienes como cuerpo del mensaje.
  3. Edita tu código usando etiquetas.
    Te envío un privado con mas instrucciones. Mira tu casilla arriba derecha

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