Stránka 27 z 27

Re: Pavouk Hiwonder

Napsal: 04 úno 2026, 10:44
od luger
výsledek:
plechová horní část pavoučka slouží jako elektroda a je jedním drátkem propojená v mém případě na A2. Plocha je cca 150x80 mm. Plech lakovaný, kontakt je na odizolované plošce.
Program:

Kód: Vybrat vše

#include <ADCTouch.h>

const int sensorPin = A2;
int ref;
const int threshold = 30;  // začni třeba na 30, pak doladíš

void setup() {
  Serial.begin(9600);
  delay(500);

  ref = ADCTouch.read(sensorPin, 150);  // víc vzorků pro citlivost
}

void loop() {
  int diff = ADCTouch.read(sensorPin, 80) - ref;

  // pro ladění:
  Serial.print("diff: ");
  Serial.println(diff);

  if (diff > threshold) {
    // dotyk / blízkost ruky
  }

  delay(50);
}
můj výsledek měření:
vzdálenost ruky cca 5 cm - změna hodnoty 0-1
vzdálenost 3 cm - hodnota trvalá 1
vzdálenost 1 cm - hodnota 3-5
plný dotyk - hodnota 50-80 podle umístění dotyku ruky

je to ok, funguje to.

Re: Pavouk Hiwonder

Napsal: 17 úno 2026, 11:37
od luger
Další vylepšení pavoučka. Jak jistě všichni víte tak zvukové senzory reagují tak na 30 cm. Potřeboval jsem reakci na tlesknutí nebo písknutí alespoň na vzdálenost 3 metry. Vyzkoušel jsem snad už všechno - klíčenky, tleskací žárovky , různé čidla - nejde to upravit pro Arduino protože je nutný zásah do zapojení a to většinou končí zničením.
Ale - zakoupil jsem Waveshare 9534 který má prý leší mikrofon a taky nějaký dvoustupňový zesilovač. Nepoužil jsem analogový výstup ale digitální a nastavil jej potenciometrem na hranici kdy "kontrolní digi LED tak jen pomrkává" - to je hranice mezi zapnutím a vypnutím digi výstupu.
Program pro čtení 1/0 výstupu:

Kód: Vybrat vše

void kontrola_zvuku (){             //----------------- digital vstup pin 2 ------------------ 
    
    // každých 100 ms vyhodnotí intenzitu zvuku
  if (millis() - casStart >= 100) {
    casStart = millis();

    noInterrupts();
    surovaHodnota = pocitadlo_zvuku;
    pocitadlo_zvuku = 0;
    interrupts();

    // mapování 0–100 (0 = ticho, 100 = silný zvuk)
    uroven_zvuku = map(surovaHodnota, 0, 200, 0, 100);

    if (uroven_zvuku < 0) uroven_zvuku = 0;
    if (uroven_zvuku > 100) uroven_zvuku = 100;         //  výstup hodnoty = uroven_zvuku
   }
  }
Funguje to skvěle, na středně silné tlesknutí reaguje i na 3 metry, na písknutí je to o něco méně (neumím pořádně pískat :).