Hallo miteinander,
ich habe mich vor einigen Wochen schon einmal an euch gewendet bzgl. des SPI Bus.
Nach langem hin und her habe ich es nun endlich geschafft mithilfe des SPI Bus meine LED zum leuchten zu bringen.
Jetzt möchte ich die richtige Uhrzeit anzeigen lassen, allerdings weiß ich nicht genau wie ich am besten die Uhrzeit zähle und dann die jeweiligen Bits sende.
Wenn ich für jede Minute 3Byte’s übertrage bekomme ich ja am Ende eine riesen Datei raus.
Suche also dringend Lösungsansätze.
Hier mein Sketch mittels Timer:
// inslude the SPI library:
#include <SPI.h>
#include "TimerOne.h"
int channel1;
int channel2;
int channel3;
int hrs=10, mins=0, secs=0;
volatile int tc=0;
void update_time() { tc++;}
// set pin 10 as the slave select for the digital pot:
const int slaveSelectPin = 10;
void setup() {
// set the slaveSelectPin as an output:
pinMode(slaveSelectPin, OUTPUT);
Timer1.initialize(1000000);
Timer1.attachInterrupt (update_time);
// initialize SPI:
SPI.begin();
}
void loop() {
channel1 = 0b00000100;
channel2 = 0b00000001;
channel3 = 0b00000011;
digitalPotWrite(channel1, channel2, channel3);
delay(100);
}
void digitalPotWrite(int channel1, int channel2, int channel3) {
// take the SS pin low to select the chip:
digitalWrite(slaveSelectPin, LOW);
// send in the address and value via SPI:
SPI.transfer(channel1);
SPI.transfer(channel2);
SPI.transfer(channel3);
// take the SS pin high to de-select the chip:
digitalWrite(slaveSelectPin, HIGH);
}