Kampi
03.10.2012, 23:11
Hallo Forum,
auf Grund einer Nachfrage von meiner Webseite habe ich mal ein kleines C-Programm entwickelt um die GPIOs per Konsolenaufruf zu schalten.
Ich wollte dann noch zusätzlich eine PWM mit ins das Programm reinbasteln nur da bin ich nicht sicher ob das mit der Methode die ich aktuell verwende überhaupt machbar ist. Vielleicht kann mir ja jemand eine Antwort darauf geben :)
Hier ist schon mal das Programm für alle die die es gerne mal ausprobieren wollen
// Compile with: gcc /var/Programme/UART.c -o /var/Programme/UART
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
int fd;
char GPIO[3][30] = {"/sys/class/gpio/gpio0/value", // Array für die GPIOs
"/sys/class/gpio/gpio1/value",
"/sys/class/gpio/gpio4/value"};
int main(int argc, char** argv) // Programmstart
{
int res;
int i;
printf("Anzahl Argumente: %d \n", argc); // Ausgabe der Anzahl der übergebenen Argumente
for(i = 0; i < argc; i++) // Argumente ausgeben
{
printf("argv[%d] = %s\n", i, argv[i]);
}
if (argc >= 1) // Sind Argumente übergeben worden?
{
for(i = 1; i < argc; i++)
{
fd = open(GPIO[i-1], O_WRONLY | O_NOCTTY); // Datei mit der Indexnummer "i-1" öffnen und Name unter "fd" speichern
res = write(fd, argv[i], 1); // Argument mit der Nummer "i" in die geöffnete Datei schreiben
close (fd); // Datei schließen
}
}
return 0;
}
Der Aufruf in der Konsole erfolgt dann so:
./Programmname Bit1 Bit2 Bit3
Sprich bei mir sieht es im Moment so aus:
./GPIO 1 0 1
Sinn und Zweck ist die Ansteuerung einer RGB LED.
Deswegen auch die PWM :)
auf Grund einer Nachfrage von meiner Webseite habe ich mal ein kleines C-Programm entwickelt um die GPIOs per Konsolenaufruf zu schalten.
Ich wollte dann noch zusätzlich eine PWM mit ins das Programm reinbasteln nur da bin ich nicht sicher ob das mit der Methode die ich aktuell verwende überhaupt machbar ist. Vielleicht kann mir ja jemand eine Antwort darauf geben :)
Hier ist schon mal das Programm für alle die die es gerne mal ausprobieren wollen
// Compile with: gcc /var/Programme/UART.c -o /var/Programme/UART
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
int fd;
char GPIO[3][30] = {"/sys/class/gpio/gpio0/value", // Array für die GPIOs
"/sys/class/gpio/gpio1/value",
"/sys/class/gpio/gpio4/value"};
int main(int argc, char** argv) // Programmstart
{
int res;
int i;
printf("Anzahl Argumente: %d \n", argc); // Ausgabe der Anzahl der übergebenen Argumente
for(i = 0; i < argc; i++) // Argumente ausgeben
{
printf("argv[%d] = %s\n", i, argv[i]);
}
if (argc >= 1) // Sind Argumente übergeben worden?
{
for(i = 1; i < argc; i++)
{
fd = open(GPIO[i-1], O_WRONLY | O_NOCTTY); // Datei mit der Indexnummer "i-1" öffnen und Name unter "fd" speichern
res = write(fd, argv[i], 1); // Argument mit der Nummer "i" in die geöffnete Datei schreiben
close (fd); // Datei schließen
}
}
return 0;
}
Der Aufruf in der Konsole erfolgt dann so:
./Programmname Bit1 Bit2 Bit3
Sprich bei mir sieht es im Moment so aus:
./GPIO 1 0 1
Sinn und Zweck ist die Ansteuerung einer RGB LED.
Deswegen auch die PWM :)