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
  Problem mit SD Card Library BennIY 4 191 06.10.2016 18:38
Letzter Beitrag: Bitklopfer
  Problem mit SD.remove Eichner 6 211 22.08.2016 19:42
Letzter Beitrag: Eichner
  4x16 Tastermatrix Problem Michel 16 846 14.07.2016 10:02
Letzter Beitrag: StephanBuerger
  Problem mit Delay und Millis funnyzocker 1 458 26.06.2016 09:54
Letzter Beitrag: hotsystems
  Problem mit ESP8266 und EMail senden torsten_156 1 597 13.06.2016 21:14
Letzter Beitrag: torsten_156
  ESP8266_01 flashen - Problem torsten_156 12 1.048 30.05.2016 20:12
Letzter Beitrag: torsten_156
  Hardwareserial/Softserial: Problem mit Superklasse tuxedo0801 10 478 19.05.2016 12:25
Letzter Beitrag: amithlon
  ESP8266 HTML Problem arduino_weatherstation 1 494 25.04.2016 21:52
Letzter Beitrag: rkuehle
  Problem mit OLED 0.96" Display torsten_156 3 540 03.04.2016 15:10
Letzter Beitrag: hotsystems
  Problem: SDFat - Das Ende einer Datei finden und Schleife beenden MartinK 4 488 01.04.2016 05:49
Letzter Beitrag: MartinK

Gehe zu:


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