Graphene/Test touch sensor

Da raspibo.
Jump to navigation Jump to search

Test touch sensor

Per questo test utilizzo Teensy versione 3.1, questa versione ha la possibilità di gestire ingressi touch (non ho trovato molto a riguardo, ma qui c'è qualche informazione in più https://blog.adafruit.com/2012/10/19/teensy-3-0-software-update/ sezione Touch Sensing), purtoppo funziona solo con la pellicola più scura, ma va poi valutato meglio se ci siano altre possibilità.

Il codice di seguito permette di visualizzare i valori letti e attivando la funzione Serial Plotter dell'IDE di Arduino (presente nelle ultime versioni).

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println(touchRead(23));
  delay(100);
}

Mi sembra di capire che non sia possibile settare la sensibilità perciò l'uso è limitato alla sola pellicola più conduttiva.

La realizzazione è molto semplice perchè basta collegare un pin di Teensy alla pellicola, magari usando una graffetta.

https://blog.adafruit.com/2012/10/19/teensy-3-0-software-update/

Un programma un pò più completo per dimostare con un led RGB che le pellicole possono essere usate come pulsanti per aumentare o diminuire un valore.

int val;
long calc;
long tasto_piu;
long tasto_meno;
const int ledPin_r=21;
const int ledPin_g=5;
const int ledPin_b=6;
const long soglia_tasto_piu=2400;
const long soglia_tasto_meno=2400;
const int inc=20;

void setup() {
  Serial.begin(9600);
}

void loop() {
  tasto_piu=touchRead(22);
  Serial.print(val);
  Serial.print("\t");
  Serial.print(tasto_piu);
  Serial.print("\t");
  tasto_meno=touchRead(23);
  Serial.println(tasto_meno);
  if (tasto_piu>soglia_tasto_piu && val<=3072) { 
    val=val+inc;
  }
  if (tasto_meno>soglia_tasto_meno && val>=0) { 
    val=val-inc;
  }
  if (val>2048) {
  analogWrite(ledPin_g, val-2048);
  } else {
    analogWrite(ledPin_g, 0);
  }
  if (val>1024) {
  analogWrite(ledPin_b, val-1024);
  } else {
  analogWrite(ledPin_b, 0);
  }
  analogWrite(ledPin_r, val);
  delay(50);
}