37-i-1 sensorsett: Slik bruker du modulene

NybegynnerKode på GitHub6 min lesetid

Et 37-i-1-sensorsett er en av de rimeligste måtene å lære sensorer på – men 37 små kort uten bruksanvisning kan virke overveldende. Den gode nyheten: nesten alle modulene er én av tre typer. Lær de tre, så kan du bruke hele settet.

Hva du trenger

  • 37-i-1 sensorsett
  • Arduino UNO, Nano eller ESP32
  • Hunn–hann-jumperledninger (Dupont)
  • Arduino IDE 2

De tre modultypene

De fleste modulene har tre eller fire pinner merket S (signal), + (VCC) og – (GND). Moduler med fire pinner har ofte både DO (digital ut) og AO (analog ut), og et lite potmeter som setter terskelen for den digitale utgangen.

Type Typiske moduler Skisse
Digital inn Tilt, Hall-sensor, berøring, reed-bryter, IR-hinder, knapp, flamme (DO), lyd (DO) 01_digital_modul
Analog inn Lysmotstand (LDR), termistor, mikrofon (AO), flamme (AO), joystick 02_analog_modul
Utgang RGB-LED, tofarget LED, summer, relé, laser 03_rgb_led
Spesielle Dreieenkoder, DHT11, DS18B20, IR-mottaker 04_dreieenkoder + bibliotek

Obs: Pinnemerkingen varierer mellom produsenter, og noen moduler har + og – byttet om. Se alltid på trykket på kortet før du kobler til – ikke bare på pinnerekkefølgen i et bilde.

1. Digitale moduler

En digital modul svarer bare ja eller nei: magnet eller ikke, vippet eller ikke. Koble S/DO til pinne 2. Skissen tenner den innebygde LED-en på pinne 13 og skriver hver endring til seriellmonitoren:

// Leser en hvilken som helst modul med digital utgang (DO/S): tilt, Hall, berøring,
// flamme, lyd, IR-hinder, reed-bryter m.fl. Den innebygde LED-en på pinne 13 viser tilstanden.
// Kobling: modulens S/DO -> pinne 2, + / VCC -> 5V, - / GND -> GND.
// Mange moduler er aktivt lave (utgangen går LOW når de trigges) – se seriellmonitoren.

const int SENSOR_PIN = 2;
const int LED_PIN = LED_BUILTIN;

int forrige = -1;

void setup() {
  pinMode(SENSOR_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int verdi = digitalRead(SENSOR_PIN);
  digitalWrite(LED_PIN, verdi);
  if (verdi != forrige) {
    Serial.println(verdi == HIGH ? "HIGH" : "LOW");
    forrige = verdi;
  }
  delay(10);
}

Mange moduler er aktivt lave – utgangen går til LOW når de trigges. Det er ikke en feil, bare snu logikken i koden din. På moduler med potmeter (flamme, lyd, IR-hinder) justerer du følsomheten til den lille LED-en på modulen skifter akkurat der du vil.

2. Analoge moduler

En analog modul gir en spenning mellom 0 og 5 V som Arduinoen gjør om til et tall fra 0 til 1023. Koble AO til A0 og åpne Tools → Serial Plotter:

// Leser moduler med analog utgang (AO): lysmotstand (LDR), mikrofon, termistor,
// flamme- og fuktsensor. Skriver verdien til seriellplotteren og tenner LED-en over en terskel.
// Kobling: AO -> A0, + / VCC -> 5V, - / GND -> GND.

const int SENSOR_PIN = A0;
const int LED_PIN = LED_BUILTIN;
const int TERSKEL = 512; // Juster etter hva du måler

void setup() {
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int verdi = analogRead(SENSOR_PIN); // 0–1023 tilsvarer 0–5 V
  digitalWrite(LED_PIN, verdi > TERSKEL ? HIGH : LOW);
  Serial.println(verdi);
  delay(50);
}

Hold hånden over lysmotstanden eller blås på mikrofonen, og se kurven endre seg. Når du ser hvilke verdier du får, setter du TERSKEL til et tall midt mellom «av» og «på».

3. Utganger: RGB-LED

RGB-modulen er tre LED-er i én. Med PWM på hver farge kan du blande alle farger. Koble R, G og B til pinne 9, 10 og 11:

// Toner en RGB-LED-modul (KY-016 eller KY-009) gjennom fargehjulet med PWM.
// Kobling: R -> pinne 9, G -> pinne 10, B -> pinne 11, - -> GND.
// Modulene har ofte innebygde motstander; bruker du en løs RGB-LED trenger hver farge 220 ohm.

const int R_PIN = 9;
const int G_PIN = 10;
const int B_PIN = 11;

void settFarge(int r, int g, int b) {
  analogWrite(R_PIN, r);
  analogWrite(G_PIN, g);
  analogWrite(B_PIN, b);
}

void setup() {
  pinMode(R_PIN, OUTPUT);
  pinMode(G_PIN, OUTPUT);
  pinMode(B_PIN, OUTPUT);
}

void loop() {
  // Tre faser: rød -> grønn -> blå -> rød
  for (int i = 0; i < 256; i++) { settFarge(255 - i, i, 0); delay(8); }
  for (int i = 0; i < 256; i++) { settFarge(0, 255 - i, i); delay(8); }
  for (int i = 0; i < 256; i++) { settFarge(i, 0, 255 - i); delay(8); }
}

4. Dreieenkoderen

Dreieenkoderen (KY-040) ser ut som et potmeter, men kan vris rundt uendelig og gir pulser i stedet for en spenning. To utganger (CLK og DT) er forskjøvet i tid, og rekkefølgen forteller hvilken vei du vrir. Den har også en trykknapp (SW):

// Leser en dreieenkoder (KY-040): teller opp/ned når du vrir, nullstiller når du trykker.
// Kobling: CLK -> pinne 2, DT -> pinne 3, SW -> pinne 4, + -> 5V, GND -> GND.

const int CLK = 2;
const int DT = 3;
const int SW = 4;

int teller = 0;
int forrigeClk;

void setup() {
  pinMode(CLK, INPUT_PULLUP);
  pinMode(DT, INPUT_PULLUP);
  pinMode(SW, INPUT_PULLUP);
  forrigeClk = digitalRead(CLK);
  Serial.begin(9600);
}

void loop() {
  int clk = digitalRead(CLK);
  // Tell på fallende flanke av CLK; DT avgjør retningen
  if (clk != forrigeClk && clk == LOW) {
    teller += (digitalRead(DT) != clk) ? 1 : -1;
    Serial.println(teller);
  }
  forrigeClk = clk;

  if (digitalRead(SW) == LOW) {
    teller = 0;
    Serial.println("Nullstilt");
    delay(250);
  }
}

Enkoderen er fin til menyer og innstillinger – for eksempel å stille terskelen fra del 2 uten å endre koden.

Modulene som trenger bibliotek

  • DHT11 (temperatur og fukt): installer «DHT sensor library» fra Adafruit via Tools → Manage Libraries. Se også DHT22 hvis du trenger bedre nøyaktighet.
  • DS18B20 (temperatur): bibliotekene «OneWire» og «DallasTemperature».
  • IR-mottaker: biblioteket «IRremote» – les koder fra en vanlig fjernkontroll.

Bruke settet med ESP32

De fleste modulene fungerer på 3,3 V. Koble + til 3V3 i stedet for 5V, så blir signalene trygge for ESP32. To forskjeller i koden: ESP32 gir analogverdier fra 0 til 4095, og du bruker GPIO-numre (for eksempel 34 for analog inn) i stedet for A0. Moduler som trenger 5 V – som relé – må styres gjennom en transistor eller et modul-kort som tåler 3,3 V-signal.

Til skole og klasserom

Settet egner seg godt som klassesett: én pakke gir 37 ulike oppgaver, og de fire skissene over dekker det meste. En god første time er å la hver gruppe finne ut hvilken type modulen deres er – digital, analog eller utgang – og vise det i seriellplotteren.

Ny med Arduino? Start med Arduino-startpakke: dine første fem prosjekter.

Koden på GitHub
All kode fra denne guiden – kompilert og klar til bruk – ligger i det åpne repoet vårt: robonordic-prosjekter/sensorer/37-i-1-sensorsett

Mer om elektronikk og sensorer

Se alle →