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:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
MCP23016 -> Porterweiterung
23.02.2016, 12:33 (Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2016 12:37 von Boo.)
Beitrag #9
RE: MCP23016 -> Porterweiterung
sry das ich so spät mich wieder melde, war beruflich unterwegs.


@hotsystem
hab mir grad die LEDs angeschaut die du mir gezeigt hast die sind sehr teuer oder täusche ich mich wieder ?? (Stuckpreis = ca. 2,40)


mein problem bei dem MCP23016 ist, dass ich nicht weiß wie das ganze funktioniert. Ich glaub richtig zu lesen das es über das I2C Protokoll verläuft oder???

Unten habe seht ihr meinen aufbau

Code:
void setup() {

Wire.begin();
Wire.beginTransmission(B00100000); // select our MCP
Wire.write(B00000110); // select IODIR0
Wire.write(B00000000); // change all GP0 pin’s to outputs
Wire.endTransmission(); // drop the connection

}

void loop() {

digitalWriteMCP(0,1);
delay(200);
digitalWriteMCP(1,1);
delay(200);
}

digitalWriteMCP(0,0);
delay(200);
digitalWriteMCP(1,0);
delay(200);
digitalWriteMCP(2,0);
delay(200);
}

boolean digitalWriteMCP(uint8_t pinNumber, boolean OnorOff)
{
uint8_t statusGP0 = 0;

Wire.beginTransmission(B00100000);
Wire.write(B00000000); power sockets
Wire.requestFrom(B00100000, 1);
statusGP0 = Wire.read();
Wire.endTransmission();

if (OnorOff == 0)
{
  statusGP0 &= ~(B00000001 << (pinNumber));
}
else if (OnorOff == 1)
{
  statusGP0 |= (B00000001 << (pinNumber));
}
else
  return false;
Wire.beginTransmission(B00100000);
Wire.write(B00000000);
Wire.write(statusGP0);
Wire.endTransmission();
return true;
}

und der Code funktioniert manchmal, manchmal auch nicht....

hoffe ihr könnt mir helfen


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2016, 13:00 (Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2016 13:19 von hotsystems.)
Beitrag #10
RE: MCP23016 -> Porterweiterung
Ja, der Baustein ist ein I2C-Baustein.
Wenn du Probleme mit der Funktion hast, kann es an den fehlenden Pullup-Widerständen liegen.
Die 4,7 k Ohm Widerstände gehören pro I2C Leitung gegen VCC.
Damit könnte das Problem behoben sein.

Und poste bitte zukünftig den kompletten Sketch, inkl. Deklaration. Auch da können Fehler auftreten.

Edit:
Hier noch ein paar Infos zum Baustein:
https://koenwar.wordpress.com/io-expander-library/
und dem 23017
http://tronixstuff.com/2011/08/26/tutori...-io-ports/

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2016, 14:45
Beitrag #11
RE: MCP23016 -> Porterweiterung
ok danke Smile

ich werde es mal testen und mich dann melden Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.03.2016, 12:54
Beitrag #12
RE: MCP23016 -> Porterweiterung
Heey Leute,

Ich habe es nun bisschen anders gemacht aber jetzt hab ich ein anders Problem :

Code:
int latchPin = 5;
int clockPin = 7;
int dataPin = 6;

int button = 8;
int test = 0;
int led = 13;

int Zahlen[] = {B01111111,B10111111,B11011111,B11101111,B11110111,B11111011,B11111101,B11111110​};

void setup()
{
  Serial.begin(9600);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  
  pinMode(led, OUTPUT);
  pinMode(button,INPUT);
}
void loop()
{
   test = digitalRead(button);
   digitalWrite(led, test);
   if(test == 0){
     digitalWrite(latchPin, LOW);
     shiftOut(dataPin, clockPin, MSBFIRST, Zahlen[random(0,7)]);  
     digitalWrite(latchPin, HIGH);
     delay(1000);
   }
    if(test == 1){
     digitalWrite(latchPin, LOW);
     shiftOut(dataPin, clockPin, MSBFIRST, B11111111);  
     digitalWrite(latchPin, HIGH);
     delay(1000);
   }
  
}

Der Code sollte meine Leds alle Leuchten lassen wenn ein Signal auf Pin8 drauf geht und bei 0 soll er zufällige Leds an und aus knipsen.

Das tut er auch alles aber wenn ich den bin länger an lasse fängt er trotzdem an zu zufällig zu blinken.

Könnt ihr mir vielleicht da helfen??
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.03.2016, 13:39
Beitrag #13
RE: MCP23016 -> Porterweiterung
(03.03.2016 12:54)Boo schrieb:  Ich habe es nun bisschen anders gemacht aber jetzt hab ich ein anders Problem :

Der Code sollte meine Leds alle Leuchten lassen wenn ein Signal auf Pin8 drauf geht und bei 0 soll er zufällige Leds an und aus knipsen.

Das tut er auch alles aber wenn ich den bin länger an lasse fängt er trotzdem an zu zufällig zu blinken.

Könnt ihr mir vielleicht da helfen??

Ich vermute, du hast deinen Taster nicht entprellt und verwendest keinen Pullup- bzw. Pulldownwiderstand am Eingang "button".

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.03.2016, 13:54
Beitrag #14
RE: MCP23016 -> Porterweiterung
Danke für die Antwort Smile.... es ist richtig das ich nicht entprelle jedoch verwende ich Widerstand.

Muss ich den entprellen wenn ich einen Kippschalter verwende???
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.03.2016, 14:22
Beitrag #15
RE: MCP23016 -> Porterweiterung
(03.03.2016 13:54)Boo schrieb:  Danke für die Antwort Smile.... es ist richtig das ich nicht entprelle jedoch verwende ich Widerstand.

Muss ich den entprellen wenn ich einen Kippschalter verwende???
Und der Widerstand ist auch richtig angeschlossen?

Ja, jeder mechanische Taster/Schalter/Kontakt prellt, wenn er nicht explizit entprellt wird.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.03.2016, 15:09
Beitrag #16
RE: MCP23016 -> Porterweiterung
ich frag jetz einfach doof mal : was heißt richtig angeschloßen ?? in reihe mit dem schalter oder?

dann muss ich mich kurz einlesen wie das mit dem prellen geht..
hast du gute quellen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


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