Buenas a todos!
Estoy tratando de hacer un pequeño proyecto de arduino para una simple radio. Para empezar no soy ningún experto así que seguro que mis errores son básicos (pido perdón).
Los elementos que quiero que tenga son:
Arduino Uno.
Pantalla LCD para mostrar la sintonía y poco más.
Potenciómetro que permita cambiar la sintonía.
Modulo de radio TEA5767 con antena integrada.
Nota: En el esquema he puesto un piezo en vez de la radio (porque no había) pero la conexión que he hecho ha sido;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <TEA5767Radio.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección I2C de la pantalla LCD
TEA5767Radio radio; // Instancia del módulo TEA5767
float currentFrequency = 101.1; // Frecuencia inicial, reemplaza con la frecuencia deseada
void setup() {
lcd.init();
lcd.backlight();
// Inicializar el módulo TEA5767
Wire.begin();
radio.setFrequency(currentFrequency);
}
void loop() {
// Leer la entrada serial
if (Serial.available() > 0) {
char input = Serial.read();
// Cambiar la frecuencia al presionar 'D' (subir)
if (input == 'D' || input == 'd') {
currentFrequency += 0.1;
radio.setFrequency(currentFrequency);
}
// Cambiar la frecuencia al presionar 'A' (bajar)
else if (input == 'A' || input == 'a') {
currentFrequency -= 0.1;
radio.setFrequency(currentFrequency);
}
}
// Escribir en el LCD
lcd.clear();
lcd.print("Estacion:");
// Mostrar la frecuencia en el LCD
lcd.setCursor(0, 1);
lcd.print(currentFrequency, 1); // Muestra la frecuencia con un decimal
// Esperar antes de la siguiente iteración
delay(500);
}
No sé qué más se puede necesitar, lo que sea me comentáis. Será una tontería pero tampoco soy un experto de esto... gracias de todos modos.
La radio se conecta en A4 y A5 al igual que la LCD.
https://www.prometec.net/tea5767-fm-con-display-i2c/
Ya, esa página la tengo vista... pero al añadir el potenciómetro no me aclaro con cómo tiene que ser el código.
Además, en mi cabeza no entra cómo dos periféricos pueden estar conectados a mismos pines.
El display no es con conexión I2C pero es fácil adaptarlo, o bien fijate como maneja la sintonía con el potenciómetro y agrégale a tu código.
Circuito inter-integrado (I²C, del inglés Inter-Integrated Circuit) es un bus serie de datos desarrollado en 1982 por Philips Semiconductors (hoy NXP Semiconductors, parte de Qualcomm). Se utiliza principalmente internamente para la comunicación entre diferentes partes de un circuito, por ejemplo, entre un controlador y circuitos periféricos integrados.
El sistema original fue desarrollado por Philips a principios de 1980 con el fin de controlar varios chips en televisores de manera sencilla. ...
Si te molesta conectar el modulo de radio y la pantalla a los pines A4 y A5 haz esto:
Tan solo conecta la pantalla o el modulo de radio a los pines SCL y SDA situados al lado de los pines digitales.
Mucho mejor así, los cables quedan menos enrollados
El link ese me ha sido bastante útil, de momento ya puedo cambiar la sintonía aunque no me lo muestra en la pantalla (cosa que voy a revisar).
Postea el código nuevo y lo revisamos sin costo adicional.
Perdón por tardar en contestar... mucho curro
La verdad es que (creo) no he cambiado el código, pero lo mando por si acaso. Hay dos inconvenientes que encuentro:
El potenciómetro es muy sensible y cualquier movimiento hace cambios bruscos
No consigo que la pantalla muestre nada (pensaba que sería el contraste pero eso ya lo he solucionado y parece que no)
#include "Wire.h"
#include "TEA5767Radio.h"
#include "LiquidCrystal.h"
TEA5767Radio radio;
double frecuencia = 88.0;
double frecuencia_ant = 88.0;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup(){
Serial.begin(9600);
Wire.begin();
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Arduino FM Radio");
Serial.println("Arduino FM Radio ");
}
void loop(){
int valor_pot = analogRead(A0);
frecuencia = ((double)valor_pot * (108.0 - 88.0)) / 1024.0 + 88.0;
frecuencia = ((int)(frecuencia * 10)) / 10.0;
if (frecuencia_ant != frecuencia) {
lcd.setCursor(0, 1);
lcd.print("Freq: ");
lcd.setCursor(6, 1);
lcd.print(" MHz");
lcd.setCursor(6, 1);
lcd.print(frecuencia, 1);
Serial.print("frecuencia: ");
Serial.println(frecuencia);
radio.setFrequency(frecuencia);
frecuencia_ant = frecuencia;
}
}
Gracias por la ayuda
¿La LCD no es I2C o la has cambiado?
Ese código es para una pantalla con conexión paralela.
Coloca un potenciómetro multivuelta.
system
Closed
November 9, 2024, 1:43am
12
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.