Dies ist eine alte Version des Dokuments!
Zeichen ausgeben
/* * Einfaches Demo-Programm * Blinkenlights-Bausatz * www.eHaJo.de * * (C) Hannes Jochriem, 2013 * */ #include <stdio.h> #include <string.h> #include <fcntl.h> #include <termios.h> #include "font.h" int main() { printf("Starte LEDMatrix-Programm\n"); int fd; int i, j; struct termios options; char buffer; char temp; fd = open("/dev/ttyACM0", O_RDWR | O_NOCTTY | O_NDELAY); // seriellen port oeffnen if(fd == -1) { printf("konnte Port nicht oeffnen\n"); } else { fcntl(fd, F_SETFL, 0); printf("port geoeffnet...\n"); } // seriellen port konfigurieren: tcgetattr(fd, &options); cfsetispeed(&options, B115200); cfsetospeed(&options, B115200); options.c_cflag |= (CLOCAL | CREAD); options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; options.c_cflag &= ~( ICANON | ECHO | ECHOE |ISIG ); options.c_iflag &= ~(IXON | IXOFF | IXANY ); options.c_oflag &= ~OPOST; tcsetattr(fd, TCSANOW, &options); // die config an den port uebertragen // Alle LEDs ausschalten: for(i = 0; i<8; i++) { for(j = 0; j<8; j++) { buffer = (j<<1) | (i<<4); write(fd, &buffer, 1); } } printf("Bitte Zeichen eingeben: "); while(1) { // haupt-endlosschleife scanf("%c", &temp); if (!(temp < 0x20) || (temp > 0x7F)) { // Zeichen darstellbar for(i = 0; i<8; i++) { for(j = 0; j<7; j++) { if(font[(temp-0x20)*7+j] & (1<<i)) // Bit fuer Bit ueberprufen ob 1 und somit LED an buffer = (((6-j) << 1) | ((7-i)<<4)) + 1; else // Falls Bit = 0: LED ausschalten buffer = (((6-j) << 1) | ((7-i)<<4)); write(fd, &buffer, 1); // sende byte an ledmatrix } } } sleep(1); // 1s Pause, wenn man mehr Zeichen eingibt landen die im Puffer und werden nach und nach ausgegeben } close(fd); // port schliessen return 0; }