Hackster is hosting Hackster Holidays, Finale: Livestream & Giveaway Drawing. Watch previous episodes or stream live on Tuesday!Stream Hackster Holidays, Finale on Tuesday!
naveen manwani
Published © GPL3+

Using Grove-Rotary Angle Sensor(P) to Control Grove LED

Using Arduino/Genuino 101 to control the brightness of an LED through Grove-Rotary Angle Sensor(P) .

BeginnerProtip1 hour4,691
Using Grove-Rotary Angle Sensor(P) to Control Grove LED

Things used in this project

Story

Read more

Schematics

connecting Grove -Rotary Angle Sensor(P)

it shows on which pin (A0) you have to connect the Grove -Rotary Angle Sensor(P) to the Grove Base shield which is mounted on Arduino 101 .

connecting Grove -LED socket kit

it shows on which pin (D2) you have to connect the Grove -LED socket kit to the Grove Base shield which is mounted on Arduino 101 .

Full Set Up of the Project

this is how the final project look like

Code

code for the project

C/C++
/*macro definitions of Rotary angle sensor and LED pin*/
    #define ROTARY_ANGLE_SENSOR A0
    #define LED 2//the Grove - LED is connected to D3 of Arduino
    #define ADC_REF 5//reference voltage of ADC is 5v.If the Vcc switch on the seeeduino
                     //board switches to 3V3, the ADC_REF should be 3.3
    #define GROVE_VCC 5//VCC of the grove interface is normally 5v
    #define FULL_ANGLE 300//full value of the rotary angle is 300 degrees
    void setup() 
    {
        Serial.begin(9600);
        pinsInit();
    }

    void loop() 
    {
        int degrees;
        degrees = getDegree();
        Serial.println("The angle between the mark and the starting position:");
        Serial.println(degrees);

        int brightness;
        /*The degrees is 0~300, should be converted to be 0~255 to control the*/
        /*brightness of LED                                                   */
        brightness = map(degrees, 0, FULL_ANGLE, 0, 255); 
        controlBrightness(brightness);

        delay(500);
    }
    void pinsInit()
    {
        pinMode(ROTARY_ANGLE_SENSOR, INPUT);
        pinMode(LED,OUTPUT);
    }

    /*PWM control brightness                        */
    /*If brightness is 0,the LED is off.            */
    /*The Greater the brightness, the brighter the LED.*/
    /*The range of brightness is 0~255              */
    void controlBrightness(int brightness)
    {
        analogWrite(LED,brightness);
    }
    /************************************************************************/
    /*Function: Get the angle between the mark and the starting position    */
    /*Parameter:-void                                                       */
    /*Return:   -int,the range of degrees is 0~300                          */
    int getDegree()
    {
        int sensor_value = analogRead(ROTARY_ANGLE_SENSOR);
        float voltage;
        voltage = (float)sensor_value*ADC_REF/1023;
        float degrees = (voltage*FULL_ANGLE)/GROVE_VCC;
        return degrees;
    }

Credits

naveen manwani
9 projects • 9 followers
Electronics & Communication Engineer,machine learning and deep learning enthusiast |Fast.ai Fellowship,Mentor @ coursera deeplearning.ai

Comments