viernes, 28 de abril de 2023

RS+contador

 int pinnegro = 12;   // Declaramos la variable pin del Botón

int pinrojo = 3;

int pinled =  13;   // Declaramos la variable pin del Led

// Variables dinámicas

int botonset = 0;  // Variable para estado del botón

int botonreset = 0;

int salida=0;

int anterior=0;

int contador=0;


void setup() {

 Serial.begin(9600);

pinMode(pinled, OUTPUT);

// Inicializa el pin del botón como entrada:

pinMode(pinnegro, INPUT);

pinMode(pinrojo, INPUT);

}


void loop(){

botonset= digitalRead(pinnegro);

botonreset= digitalRead(pinrojo);

salida=digitalRead (pinled);

  if ( botonset== HIGH && botonreset== LOW ) {digitalWrite(pinled, HIGH);contador = contador+botonset;

  Serial.println("botonset=1  contador=");Serial.println(contador);}

 if ( botonreset== HIGH && botonset== LOW) {salida==LOW;Serial.println("botonreset=1");digitalWrite(pinled, LOW);}

  if ( botonset== LOW && botonreset== LOW) {Serial.println(salida);}

    if ( botonset== HIGH && botonreset== HIGH ) {Serial.println("no permitido");salida==anterior;Serial.println(anterior);}

    delay(200);}

Duda respecto la conexión del condensador

 


martes, 25 de abril de 2023

Lenguaje programación: do......while

https://eloctavobit.com/lenguaje-programacion-arduino/do-while/

https://fidiasrodriguez.com/programacion-en-arduino-como-funciona-un-for-y-un-while/

http://diwo.bq.com/el-bucle-while-y-el-pulsador/

8
9
10
11
12
13
14
15
16
17
18
19
void setup()
{
pinMode(5,INPUT); //push button pin
pinMode(3,OUTPUT); // LED pin
}
 
void loop()
{
int pulsador = digitalRead(5);
while( pulsador == 1 ) //while the button is pressed
{
//blink
digitalWrite(3,HIGH);
delay(1000);
digitalWrite(3,LOW);
delay(1000);
pulsador = digitalRead(5); //refresh value of variable
}
}

Lo más importante respecto a esta modificación es tener en cuenta que el valor de la variable pulsador se debe actualizar en cada iteración, ya que de otro modo el valor nunca cambiaría dentro del bucle independientemente de que esté el botón pulsado o no, y por lo tanto el programa nunca saldría del bucle.

domingo, 23 de abril de 2023

Amplificador Operacional 2 - comparador - una aplicación

Dos infrarrojos

El sensor tiene 2 diodos LED, el de color blanco emite esa luz infrarroja que al momento de chocar con una superficie es recibida por el diodo de color negro enviando un 0 (se enciende el led verde de señalización de obstáculo y según el útilizado manda un 0, zona oscura) hacia la placa. Entonces, en pocas palabras el sensor infrarrojo en arduino sirve para la detección de alguna superficie próxima cómo un obstáculo.

https://www.luisllamas.es/arduino-detector-lineas-tcrt5000l/


const int sensorPin = 9;

void setup() {
  Serial.begin(9600);   //iniciar puerto serie
  pinMode(sensorPin, INPUT);  //definir pin como entrada
}
 
void loop(){
  int value = 0;
  value = digitalRead(sensorPin );  //lectura digital de pin
 
  if (value == LOW) {
      Serial.println("TCRT5000L activado");  //zona oscura
  }
  delay(1000);
}


Caso práctico de clase para 2: 

int VERDE = 7;     // SENSOR2
int LED = 13;       
int marron=8;      // SENSOR1
  int value1 = 0;
    int value2 = 0;
void setup() {
Serial.begin(9600);
  pinMode (VERDE, INPUT);  //  input
  pinMode (LED, OUTPUT);    // LED as OUTPUT
   pinMode(marron,INPUT);   // 
}
void loop() {

  value1 = digitalRead(marron);
  value2 = digitalRead(VERDE);
   if (value1 == LOW && value2 == HIGH){
         Serial.println ("Detectado MARRON");digitalWrite(LED,LOW); 
  }
     if (value1 == HIGH && value2 == HIGH){
         Serial.println ("fuera");digitalWrite(LED,LOW); 
           }
     if (value2 == LOW && value1 == HIGH){
         Serial.println ("Detectado VERDE");digitalWrite(LED,LOW); 
  }
     if (value2 == LOW && value1 == LOW){
         Serial.println ("dentro"); digitalWrite(LED,HIGH); 
  }
  delay (100);

viernes, 21 de abril de 2023

SCELE 21/04/2023

  • Borrador dispositivos totalmente controlados (+ explicación práctica): file
  • Programa ejemplo TMP:

#include <Wire.h> 

#include <LiquidCrystal_I2C.h>

//Crear el objeto lcd  dirección  0x3F y 16 columnas x 2 filas

LiquidCrystal_I2C lcd(0x27,16,2);  //

int lectura = 0;

int lectura1 = 0;

//Creamos una variable de tipo flotante

float temperatura = 0.0;

float temperatura1 = 0.0;

void setup() {

  //Iniciamos la comunicación serial

  Serial.begin(9600);

}

void loop() {

  //Tomamos la lectura analógica del pin al cual conectamos

  //la señal de nuestro sensor

  // Inicializar el LCD

  lcd.init();

  

  //Encender la luz de fondo.

  lcd.backlight();

  lectura = analogRead(0);

  lectura1 = analogRead(1);

  //Obtenemos la temperatura con la siguiente formula:

  temperatura = ( lectura * (500.0 / 1023.0) ) - 50.0;

   temperatura1 = ( lectura1 * (500.0 / 1023.0) ) - 50.0;

  //Imprimimos por monitor serie la temperatura en celcius

  lcd.setCursor(1, 1); lcd.print(temperatura);

  Serial.println(temperatura);

  lcd.setCursor(1, 0);

  Serial.println(temperatura1); lcd.print("N1: ");lcd.print(temperatura1);

  delay(500);

}