Skip to content

Commit a0f936a

Browse files
authored
Add files via upload
1 parent 99d44b6 commit a0f936a

6 files changed

+996
-0
lines changed

arrayOfLDR.cpp

+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/*arrayOfLDR.cpp*/
2+
3+
#include "Arduino.h"
4+
#include "arrayOfLDR.h"
5+
6+
arrayOfLDR::arrayOfLDR(int ld1,int ld2,int ld3,int ld4,int ld5,int ld6)
7+
{
8+
pinMode(ld1,INPUT);
9+
pinMode(ld2,INPUT);
10+
pinMode(ld3,INPUT);
11+
pinMode(ld4,INPUT);
12+
pinMode(ld5,INPUT);
13+
pinMode(ld6,INPUT);
14+
15+
_ld1=ld1;
16+
_ld2=ld2;
17+
_ld3=ld3;
18+
_ld4=ld4;
19+
_ld5=ld5;
20+
_ld6=ld6;
21+
22+
23+
24+
}
25+
26+
float arrayOfLDR::read_sensor_values()
27+
{
28+
29+
30+
int ldr1=digitalRead(_ld1);
31+
int ldr2=digitalRead(_ld2);
32+
int ldr3=digitalRead(_ld3);
33+
int ldr4=digitalRead(_ld4);
34+
int ldr5=digitalRead(_ld5);
35+
int ldr6=digitalRead(_ld6);
36+
37+
int junction=ldr1+ldr2+ldr3+ldr4+ldr5+ldr6;
38+
39+
float ret_error = 10;
40+
41+
if(junction > 3) return 20;
42+
43+
else if(ldr1==0 && ldr2==0 && ldr3==1 && ldr4==1 && ldr5==0 && ldr6==0)
44+
ret_error = 0;
45+
46+
else if(ldr1==0 && ldr2==0 && ldr3==1 && ldr4==0 && ldr5==0 && ldr6==0)
47+
ret_error = 1;
48+
49+
else if(ldr1==0 && ldr2==1 && ldr3==1 && ldr4==0 && ldr5==0 && ldr6==0)
50+
ret_error = 2;
51+
52+
else if(ldr1==0 && ldr2==1 && ldr3==0 && ldr4==0 && ldr5==0 && ldr6==0 )
53+
ret_error = 3;
54+
55+
else if(ldr1==1 && ldr2==1 && ldr3==0 && ldr4==0 && ldr5==0 && ldr6==0)
56+
ret_error = 4;
57+
58+
else if(ldr1==1 && ldr2==0 && ldr3==0 && ldr4==0 && ldr5==0 && ldr6==0)
59+
ret_error = 5;
60+
61+
else if(ldr1==0 && ldr2==0 && ldr3==0 && ldr4==1 && ldr5==0 && ldr6==0)
62+
ret_error = -1;
63+
64+
else if(ldr1==0 && ldr2==0 && ldr3==0 && ldr4==1 && ldr5==1 && ldr6==0)
65+
ret_error = -2;
66+
67+
else if(ldr1==0 && ldr2==0 && ldr3==0 && ldr4==0 && ldr5==1 && ldr6==0)
68+
ret_error = -3;
69+
70+
else if(ldr1==0 && ldr2==0 && ldr3==0 && ldr4==0 && ldr5==1 && ldr6==1)
71+
ret_error = -4;
72+
73+
else if(ldr1==0 && ldr2==0 && ldr3==0 && ldr4==0 && ldr5==0 && ldr6==1)
74+
ret_error = -5;
75+
76+
else if(ldr1==0 && ldr2==0 && ldr3==0 && ldr4==0 && ldr5==0 && ldr6==0)
77+
ret_error = 0.5;
78+
79+
else ret_error = 10;
80+
81+
return ret_error;
82+
83+
}
84+
85+
double arrayOfLDR::calculate_pid(int error,int previous_error,int previous_sum)
86+
{
87+
int p=error;
88+
int i=error+previous_sum;
89+
int d=error-previous_error;
90+
double kp=7.5,kd=2.5,ki=0;
91+
double correction_value=(kp)*p+(ki)*i+(kd)*d;
92+
return correction_value;
93+
94+
}
95+

arrayOfLDR.h

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* arrayOfLDR.h */
2+
#ifndef arrayOfLDR_h
3+
#define arrayOfLDR_h
4+
#include "Arduino.h"
5+
//#include "WProgram.h"
6+
class arrayOfLDR
7+
{
8+
public:
9+
arrayOfLDR(int ld1,int ld2,int ld3,int ld4,int ld5,int ld6);
10+
float read_sensor_values();
11+
double calculate_pid(int error,int previous_error,int previous_sum);
12+
private:
13+
int _ld1;
14+
int _ld2;
15+
int _ld3;
16+
int _ld4;
17+
int _ld5;
18+
int _ld6;
19+
/*
20+
double kp;
21+
double kd;
22+
double ki;
23+
*/
24+
25+
};
26+
27+
#endif

0 commit comments

Comments
 (0)