Tag Archives: spi

BMW e36 Tacho TFT mit i2c an zweitem Arduino


Da der Radioschacht von meinem Cockpit ja noch ungenutzt ist und ich ja auch nur analoge Abzeigen habe, dachte ich mir ich baue mir noch ein Display für weitere Informationen ein.
Zur besseren Verwaltung habe ich einen zweiten Arduino angeschlossen an dem derzeit zu testzwecken ein 1.8 Zoll SPI TFT angeschlossen ist.

Möglich wäre auch ein anderes Display mit Touch und/oder SD-Card um verschiede informationen abrufen zu können.

Eine recht einfache Möglichkeit mehrer Arduinos zu verbinden, bietet der i2c (I2C-Bus), da nur 2 Kabel für SDA, SDC benötigt werden.
Die Stromversorgung teilt sich selbiger mit dem ersten (Master) Arduino.

An diesem “Bus” konnen bis zu 112 Arduinos angeschlossen und über einen USB-port angesprochen werden.

Transfer rate: 10 Kb/s (low speed) – 100Kb/s
SDA – Serial Data line
SCL – Serial CLock line
128 possible addresses
16 reserved addresses
112 devices max
Devices have to share both 5V (Power) and GND (Ground)

Es müssen nur A4, A5 (Leonardo: A2,A3, Due/Mega: A20,A21) der Arduinos verbunden werden.
Jeweils zwischen den Leitungen zur 5v muss ein 1,5 KOhm Widerstand (nicht benötigt beim Mega) eingesetzt werden.

Erste Test sind abgeschlossen und ich werde mir jetzt erstmal ein grösseres 3.2 Zoll TDT mit Touch und SD bestellen.

BMW Tacho mit Led TFT

shiftregister 74hc595

Mit 3 Kabel, Anzahl x Led’s, am Arduino ansteuern.

das Shift Register Breakout – 74HC595 mit Hardware SPI

Demo (8 x Led & 1 x 7 segment) mit 2 x 74HC595

#include <SPI.h>
//                      Mega2560  74HC595  ARDUINO SPI
int dataPin = 11;       // 51     SER    =   MOSI
int latchPin = 10;      // 53     RCLK   =   SS
int clockPin = 13;      // 52     SRCLK  =   SCLK

int N1[9] = {63,6,91,79,102,109,124,7,127};
int N2[9] = {0,1,3,7,15,31,63,127,255};

void setup()
{
  pinMode(latchPin, OUTPUT);   
  digitalWrite(latchPin, LOW);
 
  //Setup SPI
 SPI.setBitOrder(MSBFIRST);
 SPI.begin();  
}

void loop() {
   for (byte i=0; i < 9; i++)
    {
      writeOutput(N1[i], N2[i]);
      delay(500);
    }
}

void writeOutput(int b1, int b2)
{
    digitalWrite(latchPin, HIGH);  // Pull latch LOW to send data
    SPI.transfer(b1);
    SPI.transfer(b2);
    digitalWrite(latchPin, LOW);   // Lower the latch to apply the changes
}

breakboard_74hc595
1
WP2Social Auto Publish Powered By : XYZScripts.com