Följeslagare IC (3 / 36 steg)
Analoga pin används för att hitta motstånd
int Apin = 7.
värden av r1 till r5
flyta r1 = 1000;
flyta r2 = 4700;
flyta r3 = 10000;
flyta r4 = 47000;
flyta r5 = 100000;
Pins R1 till r5
int r1_pin = 2;
int r2_pin = 3;
int r3_pin = 4;
int r4_pin = 5;
int r5_pin = 6;
flyta läsning = 0; läsa från analoga stift och lagra här
float R = 0; beräkna okänd och lagra här
Sträng finalR; slutliga värdet som ska visas tillsammans med enheter
int caseno; för felsökning, lagrar målnummer
vi dela upp hela sortimentet i fall och tilldela varje nummer,
totalt 5 fall
case1: mindre än 2850
case2: 2850 till 7350
ärendet3: 7350 till 28500
ärendet4: 28500 till 73500
case5: mer än 73500
#include < stdlib.h > / / behövs för att konvertera flyttal till sträng,
har String(float,n) funktion. Förklaras nedan.
void setup() {
Serial.BEGIN(9600);
}
void loop() {
först hitta vi okända motstånd med 1kOhm resistor
Därför inaktivera R2, R3, R4 och R5
digitalWrite (r2_pin, låg); slå varje stift till låg innan du ställer in det som indata
pinMode (r2_pin, ingång); vrida den till ingången när dess hög kan de
inre pullup motstånd
digitalWrite (r3_pin, låg);
pinMode (r3_pin, ingång);
digitalWrite (r4_pin, låg);
pinMode (r4_pin, ingång);
digitalWrite (r5_pin, låg);
pinMode (r5_pin, ingång);
pinMode (r1_pin, produktionen);
digitalWrite (r1_pin, hög);
läsa och beräkna motstånd
Reading=analogRead(APIn);
R=(Reading*R1)/(1023-Reading);
om värdet < 2850, finalR = värde (med 1kOhm)
IF(R<2850) {
caseno = 1;
IF(R<1000) {//if-värde mindre än 1000 användning "Ohm" inte "kOhm"
finalR = String(R,2) + "Ohm"; String(float,n) konvertera flyttal till sträng
med n siffror efter decimal
tillmäter strängen "Ohm" efter värde
"+" sammanfogar två strängar här
}
annat {//use "kOhm
R = R/1000;
finalR = String(R,2) + "kOhm";
}
}
om värde mellan 2850 och 7350, använda värdet erhålls genom 4.7kOhm
annars om (R > = 2850 & & R < 7350) {
caseno = 2;
digitalWrite (r1_pin, låg); Aktivera endast 4.7kOhm
pinMode (r1_pin, ingång);
digitalWrite (r3_pin, låg);
pinMode (r3_pin, ingång);
digitalWrite (r4_pin, låg);
pinMode (r4_pin, ingång);
digitalWrite (r5_pin, låg);
pinMode (r5_pin, ingång);
pinMode (r2_pin, produktionen);
digitalWrite (r2_pin, hög);
Reading=analogRead(APIn);
R =(reading*r2) /(1023-reading)/1000;
finalR = String(R,2) + "kOhm";
}
om värde mellan 7350 och 28500, Använd värdet erhålls genom 10kOhm
annars om (R > = 7350 & & R < 28500) {
caseno = 3;
digitalWrite (r1_pin, låg);
pinMode (r1_pin, ingång);
digitalWrite (r2_pin, låg);
pinMode (r2_pin, ingång);
digitalWrite (r4_pin, låg);
pinMode (r4_pin, ingång);
digitalWrite (r5_pin, låg);
pinMode (r5_pin, ingång);
pinMode (r3_pin, produktionen);
digitalWrite (r3_pin, hög);
Reading=analogRead(APIn);
R =(reading*r3) /(1023-reading)/1000;
finalR = String(R,2) + "kOhm";
}
om värde mellan 28500 och 73500, använda värdet erhålls genom 47kOhm
annars om (R > = 28500 & & R < 73500) {
caseno = 4;
digitalWrite (r1_pin, låg);
pinMode (r1_pin, ingång);
digitalWrite (r2_pin, låg);
pinMode (r2_pin, ingång);
digitalWrite (r3_pin, låg);
pinMode (r3_pin, ingång);
digitalWrite (r5_pin, låg);
pinMode (r5_pin, ingång);
pinMode (r4_pin, produktionen);
digitalWrite (r4_pin, hög);
Reading=analogRead(APIn);
R =(reading*r4) /(1023-reading)/1000;
finalR = String(R,2) + "kOhm";
}
om värde mer än 73500, använda värdet erhålls genom 100kOhm
annars om (R > = 73500) {
caseno = 5;
digitalWrite (r1_pin, låg);
pinMode (r1_pin, ingång);
digitalWrite (r2_pin, låg);
pinMode (r2_pin, ingång);
digitalWrite (r3_pin, låg);
pinMode (r3_pin, ingång);
digitalWrite (r4_pin, låg);
pinMode (r4_pin, ingång);
pinMode (r5_pin, produktionen);
digitalWrite (r5_pin, hög);
Reading=analogRead(APIn);
R =(reading*r5) /(1023-reading)/1000;
finalR = String(R,2) + "kOhm";
}
Serial.println(finalR); skriva ut den sista strängen med enheter
Serial.println("");
Delay(1000);
}