ok grazie!
per semplificarmi complicarmi la vita mi stavo costruendo una mini libreria, giusto per capire un po come funziona, usando la guida sul forum arduino e altre. Facendo dei micro test funziona però passando a cose più complesse non riesco a usarla.
si basa su questo codice di controllo del 74HC595, per adesso tutte le funzioni per scrivere i numeri non sono complete visto che comunque non riesco a usare le classi
//74HC595
const int latchPin = 8;
const int clockPin = 12;
const int dataPin = 11;
int bitToSet = ; //here
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
registerWrite(bitToSet, HIGH);
}
void registerWrite(int whichPin, int whichState) {
byte bitsToSend = 0;
digitalWrite(latchPin, LOW);
bitWrite(bitsToSend, whichPin, whichState);
shiftOut(dataPin, clockPin, MSBFIRST, bitsToSend);
digitalWrite(latchPin, HIGH);
}
il mio file .h
#ifndef Test_h
#define Test_h
#include "Arduino.h"
class Test {
public:
test(int a);
latchPin(const int latchPin);
clockPin(const int clockPin);
dataPin(const int dataPin);
void one();
void two();
void three();
void four();
void five();
void six();
void seven();
void eight();
void nine();
void zero();
private:
int b;
void registerWrite(int whichPin, int whichState);
};
#endif
il .cpp
#include "Arduino.h"
#include "Test.h"
Test::test(int a) {
b = a;
}
Test::latchPin(const int latchPin) {
pinMode(latchPin, OUTPUT);
}
Test::clockPin(const int clockPin) {
pinMode(clockPin, OUTPUT);
}
Test::dataPin(const int dataPin) {
pinMode(dataPin, OUTPUT);
}
void Test::one() {
registerWrite(b, HIGH);
}
void Test::two() {
registerWrite(b + 8, HIGH);
}
void Test::three() {
registerWrite(b + 1, HIGH);
}
void Test::four() {
registerWrite(b + 2, HIGH);
}
void Test::five() {
registerWrite(b + 3, HIGH);
}
void Test::six() {
registerWrite(b + 4, HIGH);
}
void Test::seven() {
registerWrite(b + 5, HIGH);
}
void Test::eight() {
registerWrite(b + 6, HIGH);
}
void Test::nine() {
registerWrite(b - 1, HIGH);
}
void Test::zero() {
registerWrite(b - 2, HIGH);
}
void Test::registerWrite(int whichPin, int whichState) {
byte bitsToSend = 0;
digitalWrite(latchPin, LOW);
bitWrite(bitsToSend, whichPin, whichState);
shiftOut(dataPin, clockPin, MSBFIRST, bitsToSend);
digitalWrite(latchPin, HIGH);
}
negli allegati ho messo la libreria se qualcuno vuole provarci
keywords.txt (163 Bytes)
Test.cpp (1.02 KB)
Test.h (452 Bytes)