INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Problem Schieberegister, Midi Controller
25.09.2015, 08:33
Beitrag #1
Music Problem Schieberegister, Midi Controller
Hallo,

ich "entwickle" gerade einen Midi Controller um damit DMX Software zu steuern.
Das Projekt soll Schlussendlich 35 Fader und 89 Taster mit Led haben.
Das ganze läuft über einen Arduino Mega.
Die Fader werden mit 4051 gemultiplext, das funktioniert auch sehr gut Cool

Problem sind jetzt die 74HC165.
Ich bekomme bei jedem Tastendruck 2 Signale, einmal wenn der Taster gedrückt wird und wenn er wieder los gelassen wird.
Es darf aber nur 1 Signal kommen.
Und ich habe keinen Plan warum Huh


Kann mir jemand sagen was ich da falsch mache?
Ich vermute einen fehler in der Schleife...
Bin noch nicht so lange in der Materie.

Und die ganz große frage ist, kann ich ohne probleme 11 74HC165 Kaskadieren Huh

Freue mich über jede hilfe Smile

Gruß
Vittelboy

Code:
#include <SPI.h>
#include <MIDI.h>
#include <midi_Defs.h>
#include <midi_Message.h>
#include <midi_Namespace.h>
#include <midi_Settings.h>

const byte LATCH = 6;
MIDI_CREATE_DEFAULT_INSTANCE();

void setup ()
{ MIDI.begin();
  SPI.begin ();
  Serial.begin (9600);
  
  pinMode (LATCH, OUTPUT);
  digitalWrite (LATCH, HIGH);
}  // end of setup

byte optionSwitch;
byte oldOptionSwitch; // previous state

void loop ()
{
  digitalWrite (LATCH, LOW);    // pulse the parallel load latch
  digitalWrite (LATCH, HIGH);
  optionSwitch = SPI.transfer (0);
  
  byte mask = 1;
  for (int i = 1; i <= 4; i++)
    {
    if ((optionSwitch & mask) != (oldOptionSwitch & mask))
      {
      if (i == 1){MIDI.sendControlChange(1, 127, 1);}
      if (i == 2){MIDI.sendControlChange(2, 127, 1);}
      if (i == 3){MIDI.sendControlChange(3, 127, 1);}
      if (i == 4){MIDI.sendControlChange(4, 127, 1);}
      
      
      }  // end of bit has changed
    mask <<= 1;  
    }  // end of for each bit
  
  oldOptionSwitch = optionSwitch;
    
}  // end of loop


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.09.2015, 12:05
Beitrag #2
RE: Problem Schieberegister, Midi Controller
Hi,
..ähm dämliche Frage, warum hast die diese Variablen:

byte optionSwitch;
byte oldOptionSwitch; // previous state

innerhalbs von setup() definiert und nicht oben bei den anderen Variablen.
Könnte mir vorstellen das die an der Stelle nicht Global wirken.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.09.2015, 14:49
Beitrag #3
RE: Problem Schieberegister, Midi Controller
(25.09.2015 12:05)Bitklopfer schrieb:  ..ähm dämliche Frage, warum hast die diese Variablen:

byte optionSwitch;
byte oldOptionSwitch; // previous state

innerhalbs von setup() definiert und nicht oben bei den anderen Variablen.
Könnte mir vorstellen das die an der Stelle nicht Global wirken.
Hi,
schau nochmal genau hin. Die beiden Zeilen stehen nach dem abschließenden "}" von Setup und vor loop(). D.h. sie stehen außerhalb jeder Funktions-, Methoden- oder Klassendefinition und sind somit global.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.09.2015, 16:13
Beitrag #4
RE: Problem Schieberegister, Midi Controller
(25.09.2015 14:49)Thorsten Pferdekämper schrieb:  ...
Hi,
schau nochmal genau hin. Die beiden Zeilen stehen nach dem abschließenden "}" von Setup und vor loop(). D.h. sie stehen außerhalb jeder Funktions-, Methoden- oder Klassendefinition und sind somit global.
Gruß,
Thorsten

UFFF...du hast Recht. Aber da würde ich die auch NIE platzieren...Smile

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.09.2015, 16:23
Beitrag #5
RE: Problem Schieberegister, Midi Controller
Hi,
jetzt aber mal zum eigentlichen Problem. Ich denke, dass die folgende Zeile der Knackpunkt ist:
Code:
if ((optionSwitch & mask) != (oldOptionSwitch & mask))
Das wird "wahr" wenn sich das entsprechende Bit ändert, egal ob von 0 nach 1 oder umgekehrt. Ich nehme an, dass diese einzelnen Bits jeweils einer Taste entsprechen. Dann dürfte die Bedingung als sowohl beim Drücken als auch beim Loslassen erfüllt sein.
Wahrscheinlich wird eine der folgenden Varianten besser funktionieren:
Code:
if ((optionSwitch & mask) && !(oldOptionSwitch & mask))
oder
Code:
if (!(optionSwitch & mask) && (oldOptionSwitch & mask))
...je nachdem, welche Flanke man haben möchte.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.09.2015, 16:42
Beitrag #6
RE: Problem Schieberegister, Midi Controller
Hallo Torsten
ich habe damit jetzt auch angefangen mit schieberegister an ein 7 zoll touch display funktioniert auch alles besten wenn ich mein button drücke
führt er sofort aus was er machen soll.
also augänge kein proplem.
nur eingänge sind mir ein weng zu wenig .
weist du ob es da noch eine möglichkeit gibt via schieberegister ?
Bei einen 7zoll touch display bleiben leider nur die analogen pins frei die leider auch sehr begrenzt sind (15 STÜCK).
Kannst du mir oder jemand anders helfen oder einen guten tip geben zwecks eingänge.
mfg schlappy

Geht nicht gibt es nicht
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.09.2015, 19:30
Beitrag #7
RE: Problem Schieberegister, Midi Controller
Hi,
genau dafür sind doch die 74HC165 da, die am Anfang des Threads erwähnt sind. Oder was meinst Du?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.09.2015, 19:44
Beitrag #8
RE: Problem Schieberegister, Midi Controller
JA ICH GLAUBE ICH HABE DA AUCH MAL KURZFRISTIG WAS GELESEN .
ich versuche es mal .
sag mal kennst du dich mit nrf24l01 aus das ist das einzige thema wo ich nicht weiter komme?
FUNKSYSTEM
GRUß SCHLAPPY

Geht nicht gibt es nicht
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Question Problem beim Hochladen auf AtTiny45. Hilfe -.- Jonas Lindenblatt 17 797 16.04.2017 12:58
Letzter Beitrag: Jonas Lindenblatt
  ESP8622 - 01 sendet UDP - Problem WLan Kriskind 37 2.936 14.03.2017 19:49
Letzter Beitrag: Tommy56
  Smart Home Webserver Basic Authentication Problem Osotastic 21 756 20.02.2017 18:00
Letzter Beitrag: Tommy56
  Problem mit Sketch senden an Uno feuerwehr 5 582 31.01.2017 20:41
Letzter Beitrag: Tommy56
  Beim Hochladen USB Problem Nils 10 903 29.12.2016 21:05
Letzter Beitrag: renid55
  Problem mit SD Card Library BennIY 4 510 06.10.2016 18:38
Letzter Beitrag: Bitklopfer
  Problem mit SD.remove Eichner 6 381 22.08.2016 19:42
Letzter Beitrag: Eichner
  4x16 Tastermatrix Problem Michel 16 1.304 14.07.2016 10:02
Letzter Beitrag: StephanBuerger
  Problem mit Delay und Millis funnyzocker 1 757 26.06.2016 09:54
Letzter Beitrag: hotsystems
  Problem mit ESP8266 und EMail senden torsten_156 1 1.130 13.06.2016 21:14
Letzter Beitrag: torsten_156

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste