Go Down

Topic: Despertador (Read 568 times) previous topic - next topic

Cosmona

Mar 11, 2018, 02:04 pm Last Edit: Mar 11, 2018, 07:05 pm by Cosmona
Hola
Estoy iniciándome en este mundo tan molón y mi primer proyecto quiero hacer un reloj despertador.

La idea es hacerlo y ampliarlo poco a poco.  Que muestre la temperatura, que se pueda parar la alarma con un sensor de proximidad. ..

Incluso puede que en un futuro se conecte por Bluetooth al móvil y te de notificaciones.

Pero poco a poco.

De momento ya me he montado la funcionalidad reloj y alarma.

La duda que tengo es la siguiente.:

Ahora mismo tengo un lcd pequeño montado junto con tres botones y el zumbador.
Con todo esto ya tengo la gran mayoría de entradas del arduino uno usadas.

Quiero comprar una tft pero me estoy viendo que no voy a tener entradas para el sensor de temperatura ni para el de proximidad.

Como se soluciona esto?
Gracias y un saludo

_jose_

#1
Mar 11, 2018, 03:24 pm Last Edit: Mar 11, 2018, 03:28 pm by _jose_
No se  como tienes los botones conectados ,pero se pueden usar varios con una sola entrada analogica mediante divisor de tension
 y diferentes valores de resistencias.Ademas en caso de necesidad,los pines analogicos tambien se pueden usar como digitales.Para futuros dispositivos ,intenta que se puedan manejar con serial o I2C ,ahorraras pines.

Cosmona

#2
Mar 11, 2018, 07:00 pm Last Edit: May 12, 2018, 06:46 pm by Cosmona
Muchas gracias!
Has sido de gran ayuda.

Por si alguien llega aquí por este motivo pongo un enlace que indica como hacerlo

https://giltesa.com/2012/06/30/varios-botones-con-una-sola-entrada-analogica

cocoloco8

Veo mas simple tener un único botón con el que poder hacer varias cosas según la cantidad de pulsaciones, con respecto a a lo de apagarlo con un sensor de proximidad aquí dejo un código para el HC-SR04(un sensor muy baratito) que detecta flancos de bajada y así usarlo como ON/OFF:


Code: [Select]
#include <Servo.h>


const int trigPin = 6;//Setup the variables for the HC-SR04

const int echoPin = 5;
int a=0;//primera lectura
int b=0;//segunda lectura
int c=0;//contador


Servo myservo;
// create servo object to control a servo
       

// variable to store the servo position

int pos = 0; 
int pos3 = 90;


void setup() {

// initialize serial communication:

Serial.begin(9600);



// attaches the servo on pin 9 to the servo object

myservo.attach(9);



}

void loop()

{



long duration, inches, cm;



// The sensor is triggered by a HIGH pulse of 10 or
// more microseconds.

// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:

pinMode(trigPin, OUTPUT);

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);



// Read the signal from the sensor: a HIGH pulse whose

// duration is the time (in microseconds) from the sending

// of the ping to the reception of its echo off of an object.

pinMode(echoPin, INPUT);

duration = pulseIn(echoPin, HIGH);



// convert the time into a distance

inches = microsecondsToInches(duration);

cm = microsecondsToCentimeters(duration);



//Tell the Arduino to print the measurement in the serial console

Serial.print(inches);

Serial.print("in, ");

Serial.print(cm);

Serial.print("cm");

Serial.println();
a=b;
b=cm;

//----------------comenzamos con las posiciones del motor---------------

if ((a<15) && (b>15) ) {//bucle de condiciones
  if(c==1)
  c=0;
  else
  c=1;
}
//bucles de posiciones

 if (c == 1) {myservo.write(pos);//distintas posiciones del servo
}
 if (c == 0) {myservo.write(pos3);//distintas posiciones del servo
}

delay(50);

}

long microsecondsToInches(long microseconds)

{

return microseconds / 74 / 2;

}

//Converts the Microseconds Reading to Centimeters

long microsecondsToCentimeters(long microseconds)

{
return microseconds / 29 / 2;
}




Lo utilizo para un servo con el que cierro y abro la puerta del garaje.

Go Up