//------------------------------------------------------------------------------------------------------------ // // ODROID-C GPIO(LED) / ADC Test Application. // // Defined port number is wiringPi port number. // // Compile : gcc -o <create excute file name> <source file name> -lwiringPi -lwiringPiDev -lpthread // Run : sudo ./<created excute file name> // //------------------------------------------------------------------------------------------------------------ #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <unistd.h> #include <string.h> #include <time.h> #include <wiringPi.h> #include <wiringPiI2C.h> #include <wiringSerial.h> #include <lcd.h> //------------------------------------------------------------------------------------------------------------ // // Global handle Define // //------------------------------------------------------------------------------------------------------------ #define DATA_UPDATE_PERIOD 100 // 100ms //------------------------------------------------------------------------------------------------------------ // // ADC: // //------------------------------------------------------------------------------------------------------------ #define PORT_ADC1 0 // ADC.AIN0 static int adcValue = 0; //------------------------------------------------------------------------------------------------------------ // // LED: // //------------------------------------------------------------------------------------------------------------ static int ledPos = 0; const int ledPorts[] = { 24, // GPIOX.BIT0(#97) 23, // GPIOX.BIT11(#108) 22, // GPIOX.BIT3(#100) 21, // GPIOX.BIT4(#101) 14, // GPIOX.BIT8(#105) 13, // GPIOX.BIT9(#106) 12, // GPIOX.BIT10(#107) 3, // GPIOX.BIT18(#115) 2, // GPIOX.BIT19(#116) 0, // GPIOY.BIT8(#88) 7, // GPIOY.BIT3(#83) 1, // GPIOY.BIT7(#87) 4, // GPIOX.BIT7(#104) 5, // GPIOX.BIT5(#102) 6, // GPIOX.BIT6(#103) 10, // GPIOX.BIT20(#117) 11, // GPIOX.BIT21(#118) 26, // GPIOX.BIT2(#99) 27, // GPIOX.BIT1(#98) }; #define MAX_LED_CNT sizeof(ledPorts) / sizeof(ledPorts[0]) //------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------ // // system init // //------------------------------------------------------------------------------------------------------------ int system_init(void) { int i; // GPIO Init(LED Port ALL Output) for(i = 0; i < MAX_LED_CNT; i++) pinMode (ledPorts[i], OUTPUT); return 0; } //------------------------------------------------------------------------------------------------------------ // // board data update // //------------------------------------------------------------------------------------------------------------ void boardDataUpdate(void) { int i; // adc value read if((adcValue = analogRead (PORT_ADC1))) { ledPos = (adcValue * MAX_LED_CNT * 1000) / 1024; ledPos = (MAX_LED_CNT - (ledPos / 1000)); } else ledPos = 0; // LED Control for(i = 0; i < MAX_LED_CNT; i++) digitalWrite (ledPorts[i], 0); // LED All Clear for(i = 0; i < ledPos; i++) digitalWrite (ledPorts[i], 1); // LED On } //------------------------------------------------------------------------------------------------------------ // // Start Program // //------------------------------------------------------------------------------------------------------------ int main (int argc, char *argv[]) { static int timer = 0 ; wiringPiSetup (); if (system_init() < 0) { fprintf (stderr, "%s: System Init failed\n", __func__); return -1; } for(;;) { if (millis () < timer) continue ; timer = millis () + DATA_UPDATE_PERIOD; // All Data update boardDataUpdate(); } return 0 ; }