Go Down

Topic: Suche lib für 74HC165 (Read 2823 times) previous topic - next topic

saibot852

wenn dann nach her 20 ic drann sind werde ich das Signal schon verstärken
ich meine nur das es bis zu 8 stück einwandfrei ansteuern lassen

agmue

Dann laß Dich bitte von mir nicht aufhalten  :)
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

saibot852

#32
Dec 27, 2015, 10:35 pm Last Edit: Dec 27, 2015, 10:49 pm by saibot852




es war ein weiter und langer weg bis hier hin

https://www.youtube.com/watch?v=pqj-AHvbysM&feature=youtu.be

gregorss

...
es war ein weiter und langer weg bis hier hin
...
Scheint sich aber gelohnt zu haben. Sieht gut aus!

Gruß

Gregor
Nicht lange fackeln, lass' Backen wackeln! (Seeed)

saibot852

sooooo

zweites Modul ist fertig. Leider bekomme ich die PushPull Schaltung nicht ans laufen :smiley-confuse:

des weiteren werden meine Buttons nicht vom IC erkannt zumindest in der Auswertung

Hier der Code
http://paste2.org/wO9OMfmF

wenn ich in der funcktion
BYTES_VAL_T read_shift_regs() Zeile 455

nach der Zeile 473
Serial.print(bitVal);

und nach Zeile 483
Serial.println();

Schreibe bekomme ich das in den Serial Monitor
00000000000000000000000000000000000000000000000

und wenn ich dann Button 1 drücke kommt da
00000000000000010000000000000000000000000000000

aber die Funktion
void display_pin_values() Zeile 490
will den State der Buttons nicht erkennen er bleibt auf Low egal welchen ich drücke
Bei den Encodern gibt es keine Probleme

agmue

Was mir spontan auffällt: #define NUMBER_OF_SHIFT_CHIPS 6 aber long hat nur vier Bytes. Oder?
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

sschultewolter

Jup ;)
So sollte man es auch nicht machen. Wobei das auch nicht schön von der Lib?!? gelöst ist. Da kann man besser mit Arrays rangehen.

const byte NUM_REGISTER = 6;
byte values[NUM_REGISTER];

Orginal Atmel AVRISP mkII zu verkaufen. Anfrage per PN ;)

saibot852

hier die Beschaltung keine Lust alles alles zu Zeichen




saibot852

#38
Jan 15, 2016, 10:51 pm Last Edit: Jan 16, 2016, 12:08 am by saibot852
Jup ;)
So sollte man es auch nicht machen. Wobei das auch nicht schön von der Lib?!? gelöst ist. Da kann man besser mit Arrays rangehen.

const byte NUM_REGISTER = 6;
byte values[NUM_REGISTER];


und das ist keine lib sondern aus diesem Beispiel code
http://playground.arduino.cc/Code/ShiftRegSN74HC165N
bitte ein genaueres Beispiel das ein angehender Programmierer verstehen kann (Hauptschule)

saibot852

so ich habe es geschafft. Ich lese nun die Pins aus und packe den wert 0 o. 1 in einen Array
und sieh da es geht

Danke für den Hinweis
sschultewolter

Code:
http://paste2.org/X8JMAN5n



Serenifly

Sowas kannst du dir sparen:
Code: [Select]

int pinA[] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW};


Einfach so:
Code: [Select]

const int SIZE = 20;

int pinA[SIZE];


Da das Array global ist wird es automatisch mit 0 initialisiert. Wobei byte als Datentyp völlig ausreicht.

saibot852

Sowas kannst du dir sparen:
Code: [Select]

int pinA[] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW};


Einfach so:
Code: [Select]

const int SIZE = 20;

int pinA[SIZE];


Da das Array global ist wird es automatisch mit 0 initialisiert. Wobei byte als Datentyp völlig ausreicht.
danke ist geändert
Code: [Select]
const int buttons = 16;
const int encoders = 16;
const int encodernums = 32;
int pinA[encoders]; // encoder read A
int pinB[encoders]; // encoder read B
int pinALast[encoders];
int aVal[encoders];
int taste[buttons]; // button state
int tasteAlt[buttons]; // button state old
int led[encoders];
int led_state_old[encoders];


gibt es eine Möglichkeit die encoder besser zu verarbeiten denn wenn ich die schnell drehe gibt es keine reaktion

agmue

Der Text
Quote
/* You will need to change the "int" to "long" If the
 * NUMBER_OF_SHIFT_CHIPS is higher than 2.
*/
#define BYTES_VAL_T unsigned int
stand noch im Kommentar, Du hast das aber inzwischen geändert.  :)
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

saibot852

#43
Jan 17, 2016, 12:16 am Last Edit: Jan 17, 2016, 12:44 am by saibot852
gibt es eine Möglichkeit die encoder besser zu verarbeiten denn wenn ich die schnell drehe gibt es keine reaktion
hat sich erledigt hab es jetzt so geschrieben

Code: [Select]
aVal[e_num] = pinA[e_num];
   if ((pinALast[e_num] == 0) && (aVal[e_num] == 1)) {
     if (pinB[e_num] == 0) {
      if (encoderPosCount[e_num] != 127) {
       encoderPosCount[e_num]++;
       MIDISEND(noteOn, EncoderChannel[e_num], encoderPosCount[e_num]);
       led[e_num] = map(encoderPosCount[e_num], 0, 127, 0, 8);
       shifterset(led[e_num], e_num);
     }
     } else {
      if (encoderPosCount[e_num] != 0) {
       encoderPosCount[e_num]--;
       MIDISEND(noteOn, EncoderChannel[e_num], encoderPosCount[e_num]);
       led[e_num] = map(encoderPosCount[e_num], 0, 127, 0, 8);
     }
     }
   }
   pinALast[e_num] = aVal[e_num];

saibot852

So noch die dritte doppelstock platte mit weiteren 6 encodern und 6 buttons fertig machen und teil 1 von 3 ist fertig  8)


Go Up