Quiero conducir los LED utilizando un Arduino Due y un MOSFET. A continuación se muestra el circuito que estoy usando, tomado de otra publicación: Conduciendo la tira de LED del microcontrolador
ReemplazéeltransistorenlaimagenconunIRLB8721PbF.Hojadedatos:
El LED_STRIP se reemplaza con dos LED blancos LH351B conectados en serie. Hoja de datos: enlace
El voltaje directo del LH351B es de aproximadamente 3V, así que estoy usando 6V como fuente de alimentación. Básicamente quiero seguir encendiendo y apagando los LEDs. Noté que cuando aumentaba la frecuencia de conmutación, por ejemplo 100 kHz, los LED eran más tenues que los de una frecuencia más lenta, como 1 kHz. ¿Qué podría estar causando la disminución del brillo?
¿Creo que el LED debería poder cambiar en el rango de nano segundos? Y el MOSFET que estoy usando también tiene un tiempo de subida / caída en nano segundos. ¿Tiene que ver con el microcontrolador? A continuación se muestra el código que estoy usando, solo una simple escritura digital utilizando la manipulación de puertos:
PIOD->PIO_SODR = 1<<8; //HIGH on pin 12
//digitalWrite(12, HIGH);
delayMicroseconds(10);
PIOD->PIO_CODR = 1<<8; //LOW on pin 12
//digitalWrite(12,LOW);
delayMicroseconds(10);
}
--EDITED--
código completo:
#include <SPI.h>
#include <SD.h>
File dataFile;
void setup() {
pinMode(12, OUTPUT);
Serial.begin(210000);
if (!SD.begin(10)) {
Serial.println("Card failed, or not present");
return;
}
Serial.println("card initialized.");
}
void loop() {
int myData_read;
dataFile = SD.open("DATALOG.dat");
myData_read = dataFile.read();
//Serial.println(myData_read);
for(int i=0; i < 8; i++){
if((myData_read & (1<<i)) >> i){
PIOD->PIO_SODR = 1<<8; //HIGH on pin 12
//digitalWrite(12, HIGH);
delayMicroseconds(5);
} else {
PIOD->PIO_CODR = 1<<8; //LOW on pin 12
//digitalWrite(12,LOW);
delayMicroseconds(5);
}
}
dataFile.close();
}