Soy nuevo en electrónica, circuitos, etc. Actualmente estoy leyendo I2C y comunicaciones en serie sincrónicas. Según tengo entendido, dos dispositivos deben estar conectados al mismo cable de RELOJ para que el esclavo sepa a qué velocidad interpretar los datos porque es posible que no tenga un reloj interno. Ahora, quería ver qué tan rápido oscila el pin SCL en Arduino Uno conectando un LED a él y GND y esperaba que el LED parpadeara rápidamente. Por supuesto, como creo, atenué la frecuencia a 1 utilizando la biblioteca Wire.h y llamando
Wire.setClock(1);
como se dice aquí . El LED aún no parpadeaba como lo esperaba, una vez por segundo. ¿Qué está mal? ¿Cómo se comporta SCL en realidad? ¿Oscila de 0V a 5V periódicamente o debo hacerlo manualmente en el código?
EDIT
El boceto completo fue el siguiente
#include <Wire.h>
void setup() {
// put your setup code here, to run once:
Wire.setClock(1);
}
void loop() {
// put your main code here, to run repeatedly:
}
EDIT 2
Construí un circuito. El LED está encendido pero no parpadea. También intenté cambiar la frecuencia en el código de 1 a diferentes valores hasta 100000.
EDIT 3
¡Parpadea! Pero no estoy seguro de que en realidad SCL lo haga parpadear. Agregué Wire.begin()
en setup()
y comencé junto con terminar una transmisión en el loop()
. Pero no reacciona a los cambios en setClock(frequency)
. También intenté poner un retraso o enviar un texto largo y aleatorio con Wire.write()
entre Wire.beginTransmission(0xA3)
y Wire.endTransmission()
. Luego simplemente parpadea una vez (tal vez varias veces pero rápido) al principio y luego deja de parpadear solo por estar encendido. El código completo es
#include <Wire.h>
void setup() {
// put your setup code here, to run once:
Wire.setClock(32000);
Wire.begin();
}
void loop() {
// put your main code here, to run repeatedly:
Wire.beginTransmission(0xA3); //arbitrary address
Wire.endTransmission();
}