Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

Serielle Netzwerke

18. November 2010

Asychron (RS232) Muss nur empfangen und nichts liefern Gibt Konvention wie schnell Daten gesendet werden (Übertragungsrate) Beide sind am Hören und am Senden, die Sendung kann irgendwann passieren. ca. 320'000 pro Sekunde Baugruppen werden angesprochen, wie LCD Anzeige oder Servocontroller (Geräte mit Stecker sind immer Asychron) Synchron (SPI) Mit Clock werden die Signale aufeinander abgestimt und senden im gleichen Takt. Geschwindigkeit legt Master fest. Es gibt Timingdiagramme die eingehalten werden müssen. Braucht mehr an Kabelverbindungen. Nackte Chips werden angesprochen, Speicherchips, digitales Potentiometer. Mikrokontroller als Master SCK Clock Pin SO Datenoutput CS Chip Select macht, das Chips hören. Micro Serial Servo Controller Byte 1 = Startbyte = 255 (konstant) Byte 2 = Servonummer = 0-7 für 0-90° und 8-15 für 0-180° Auflösung Byte 3 = Servoposition = 0-254

/*
example to control pololu serial servo board
with software serial on pins 2 and 3 of arduino

see user guide
http://iad.projects.zhdk.ch/physicalcomputing/wp-content/files/ssc03a_guide.pdf
error codes of indicator leds are on page 4 of the user guide
*/ 

#include <SoftwareSerial.h>
// only speeds up to 9600 baud possible

#define rx 3   // rx = receive data
#define tx 2   // tx = transceive = send data 

SoftwareSerial mySerial = SoftwareSerial(rx, tx);

// the setup -------------------------------------
void setup(){
  pinMode(rx, INPUT);
  pinMode(tx, OUTPUT);
  mySerial.begin(9600);
}

// the loop --------------------------------------
void loop(){

  for (int a = 0; a<254; a=a+10){
    position(a);
    delay(100);
    position(0);
    delay(100);
  }
}

// function --------------------------------------
void position(byte degree){
  mySerial.print(255, BYTE);      // Protocol Header
  mySerial.print(8, BYTE);        // Servo 0 from 0 - 180°
  mySerial.println(degree, BYTE);   // set degree
  
  delay(1000);
  mySerial.print(255, BYTE);      // Protocol Header
  mySerial.print(9, BYTE);        // Servo 0 from 0 - 180°
  mySerial.println(degree, BYTE);   // set degree
}
LCD Anzeige

#include <SoftwareSerial.h>

#define txPin 2

SoftwareSerial LCD = SoftwareSerial(0, txPin);
// since the LCD does not send data back to the Arduino, we should only define the txPin

void setup()
{
pinMode(txPin, OUTPUT);
LCD.begin(9600);

}

void loop()
{

  clearLCD();
  delay(500);
 // verschieben();
  
  selectLineOne();
  delay(100);
  LCD.print("CIAO");
  delay(500);
  selectLineTwo();
  delay(100);
  LCD.print("SIBYLLE");
  delay(500);
  
  backlightOn();
  delay(500);
  backlightOff();
  delay(500);

}

void verschieben(){
 LCD.print(0x1C, BYTE); 
}

void backlightOn(){  //turns on the backlight
LCD.print(0x7C, BYTE);   //command flag for backlight stuff
LCD.print(157, BYTE);    //light level.
}
void backlightOff(){  //turns off the backlight
LCD.print(0x7C, BYTE);   //command flag for backlight stuff
LCD.print(128, BYTE);     //light level for off.
}

void clearLCD(){
LCD.print(0xFE, BYTE);   //command flag
LCD.print(0x01, BYTE);   //clear command.
}

void selectLineOne(){  //puts the cursor at line 0 char 0.
   LCD.print(0xFE, BYTE);   //command flag
   LCD.print(128, BYTE);    //position
}
void selectLineTwo(){  //puts the cursor at line 2 char 0.
   LCD.print(0xFE, BYTE);   //command flag
   LCD.print(192, BYTE);    //position
}