| /* |
| * piglow.c: |
| * Very simple demonstration of the PiGlow board. |
| * This uses the piGlow devLib. |
| * |
| * Copyright (c) 2013 Gordon Henderson. |
| *********************************************************************** |
| * This file is part of wiringPi: |
| * https://projects.drogon.net/raspberry-pi/wiringpi/ |
| * |
| * wiringPi is free software: you can redistribute it and/or modify |
| * it under the terms of the GNU Lesser General Public License as published by |
| * the Free Software Foundation, either version 3 of the License, or |
| * (at your option) any later version. |
| * |
| * wiringPi is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public License |
| * along with wiringPi. If not, see <http://www.gnu.org/licenses/>. |
| *********************************************************************** |
| */ |
| |
| #include <stdio.h> |
| #include <string.h> |
| #include <stdlib.h> |
| |
| #ifndef TRUE |
| # define TRUE (1==1) |
| # define FALSE (!TRUE) |
| #endif |
| |
| #include <wiringPi.h> |
| #include <piGlow.h> |
| |
| static void failUsage (void) |
| { |
| fprintf (stderr, "Usage examples:\n") ; |
| fprintf (stderr, " piglow off # All off\n") ; |
| fprintf (stderr, " piglow red 50 # Light the 3 red LEDs to 50%%\n") ; |
| fprintf (stderr, " colours are: red, yellow, orange, green, blue and white\n") ; |
| fprintf (stderr, " piglow all 75 # Light all to 75%%\n") ; |
| fprintf (stderr, " piglow leg 0 25 # Light leg 0 to 25%%\n") ; |
| fprintf (stderr, " piglow ring 3 100 # Light ring 3 to 100%%\n") ; |
| fprintf (stderr, " piglow led 2 5 100 # Light the single LED on Leg 2, ring 5 to 100%%\n") ; |
| |
| exit (EXIT_FAILURE) ; |
| } |
| |
| static int getPercent (char *typed) |
| { |
| int percent ; |
| |
| percent = atoi (typed) ; |
| if ((percent < 0) || (percent > 100)) |
| { |
| fprintf (stderr, "piglow: percent value out of range\n") ; |
| exit (EXIT_FAILURE) ; |
| } |
| return (percent * 255) / 100 ; |
| } |
| |
| |
| /* |
| * main: |
| * Our little demo prgoram |
| ********************************************************************************* |
| */ |
| |
| int main (int argc, char *argv []) |
| { |
| int percent ; |
| int ring, leg ; |
| |
| // Always initialise wiringPi: |
| // Use the Sys method if you don't need to run as root |
| |
| wiringPiSetupSys () ; |
| |
| // Initialise the piGlow devLib |
| |
| piGlowSetup (FALSE) ; |
| |
| if (argc == 1) |
| failUsage () ; |
| |
| if ((argc == 2) && (strcasecmp (argv [1], "off") == 0)) |
| { |
| for (leg = 0 ; leg < 3 ; ++leg) |
| piGlowLeg (leg, 0) ; |
| return 0 ; |
| } |
| |
| if (argc == 3) |
| { |
| percent = getPercent (argv [2]) ; |
| |
| /**/ if (strcasecmp (argv [1], "red") == 0) |
| piGlowRing (PIGLOW_RED, percent) ; |
| else if (strcasecmp (argv [1], "yellow") == 0) |
| piGlowRing (PIGLOW_YELLOW, percent) ; |
| else if (strcasecmp (argv [1], "orange") == 0) |
| piGlowRing (PIGLOW_ORANGE, percent) ; |
| else if (strcasecmp (argv [1], "green") == 0) |
| piGlowRing (PIGLOW_GREEN, percent) ; |
| else if (strcasecmp (argv [1], "blue") == 0) |
| piGlowRing (PIGLOW_BLUE, percent) ; |
| else if (strcasecmp (argv [1], "white") == 0) |
| piGlowRing (PIGLOW_WHITE, percent) ; |
| else if (strcasecmp (argv [1], "all") == 0) |
| for (ring = 0 ; ring < 6 ; ++ring) |
| piGlowRing (ring, percent) ; |
| else |
| { |
| fprintf (stderr, "piglow: invalid colour\n") ; |
| exit (EXIT_FAILURE) ; |
| } |
| return 0 ; |
| } |
| |
| if (argc == 4) |
| { |
| /**/ if (strcasecmp (argv [1], "leg") == 0) |
| { |
| leg = atoi (argv [2]) ; |
| if ((leg < 0) || (leg > 2)) |
| { |
| fprintf (stderr, "piglow: leg value out of range\n") ; |
| exit (EXIT_FAILURE) ; |
| } |
| percent = getPercent (argv [3]) ; |
| piGlowLeg (leg, percent) ; |
| } |
| else if (strcasecmp (argv [1], "ring") == 0) |
| { |
| ring = atoi (argv [2]) ; |
| if ((ring < 0) || (ring > 5)) |
| { |
| fprintf (stderr, "piglow: ring value out of range\n") ; |
| exit (EXIT_FAILURE) ; |
| } |
| percent = getPercent (argv [3]) ; |
| piGlowRing (ring, percent) ; |
| } |
| return 0 ; |
| } |
| |
| if (argc == 5) |
| { |
| if (strcasecmp (argv [1], "led") != 0) |
| failUsage () ; |
| |
| leg = atoi (argv [2]) ; |
| if ((leg < 0) || (leg > 2)) |
| { |
| fprintf (stderr, "piglow: leg value out of range\n") ; |
| exit (EXIT_FAILURE) ; |
| } |
| ring = atoi (argv [3]) ; |
| if ((ring < 0) || (ring > 5)) |
| { |
| fprintf (stderr, "piglow: ring value out of range\n") ; |
| exit (EXIT_FAILURE) ; |
| } |
| percent = getPercent (argv [4]) ; |
| piGlow1 (leg, ring, percent) ; |
| return 0 ; |
| } |
| |
| failUsage () ; |
| return 0 ; |
| } |
| |
| |