/*
BARGRAPH DISPLAY
Arduino code for Individual control over each pin
Support for 40+ 74HC595 8 bit shift registers
http://bildr.org/2011/02/74hc595/
2024-14-marzo
*/
// chip 74HC595
#define DATA_PIN 8 // Pin connected to DS of 74HC595
#define LATCH_PIN 9 // Pin connected to STCP of 74HC595
#define CLOCK_PIN 10 // Pin connected to SHCP of 74HC595
// How many of the shift registers
#define NUM_SHIFT_REGS 2
const uint8_t numOfRegisterPins = NUM_SHIFT_REGS * 8;
bool registers[numOfRegisterPins];
// potenziometro
const int analogPin = A0; // the pin that the potentiometer is attached to
const int ledCount = 10; // the number of LEDs in the bar graph
void setup() { Serial.begin(9600);
pinMode(DATA_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
clearRegisters();
writeRegisters();
}
bool toggle = false;
void loop() {
/*
// read the potentiometer:
int sensorReading = analogRead(analogPin);
// map the result to a range from 0 to the number of LEDs:
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
// scrive registro led da accendere
clearRegisters();
for (uint8_t i = 0; i < ledLevel; i++) {
setRegisterPin(i, 1);
}
writeRegisters();
delay(100);
// ---------
*/
// barra avanzamento ----
for (int t=0; t<=1000; t++) {
int ledLevel = map(t, 0, 1000, 0, ledCount);Serial.println(ledLevel);
// scrive registro led da accendere
clearRegisters();
for (uint8_t i = 0; i < ledLevel; i++) {
setRegisterPin(i, 1);
}
writeRegisters();
delay(10);
}
// ---------
}
void clearRegisters() {
// Reset all register pins
for (int i = numOfRegisterPins - 1; i >= 0; i--) {
registers[i] = LOW;
}
}
void setRegisterPin(int index, int value) {
// Set an individual pin HIGH or LOW
registers[index] = value;
}
void writeRegisters() {
// Set and display registers
digitalWrite(LATCH_PIN, LOW);
//for (int i = numOfRegisterPins - 1; i >= 0; i--) {
for (int i = 10; i > 0; i--) {
digitalWrite(CLOCK_PIN, LOW);
digitalWrite(DATA_PIN, registers[i-1]);
digitalWrite(CLOCK_PIN, HIGH);
}
digitalWrite(LATCH_PIN, HIGH);
}