Some links
- This weeks fabacademy page
- Assesment Guide
- Fab Lab inventory
- Moving average for smoothing sensor signals
- 37 in 1 sensor kit
Acceleration | Distance | Potentiometer | Light | Temperature | Temperature&Humidity | Color | |
---|---|---|---|---|---|---|---|
Sensor | adxl343 | vl53l0x / vl53l1x / Breakout | 10k Trimmer | PT15-21B | NHQ103B375T10 | DHT11/DHT22 | VEML6040 |
My examples | My example | My example | My example | My example | My example | My example | |
Tutorials | Adafruit | Adafruit | Arduino | Digikey | Adafruit | Adafruit | Download the library and see the example |
XIAO RP2040 breakout board
![]() |
![]() |
---|---|
Schematic | PCB |
Acceleration ADXL343
![]() |
![]() |
---|---|
Schematic | PCB |
Code
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL343.h>
#define ADXL343_SCK D8
#define ADXL343_MISO D9
#define ADXL343_MOSI D10
#define ADXL343_CS D7
/* Assign a unique ID to this sensor at the same time */
/* Uncomment following line for default Wire bus */
//Adafruit_ADXL343 accel = Adafruit_ADXL343(12345);
/* NeoTrellis M4, etc. */
/* Uncomment following line for Wire1 bus */
//Adafruit_ADXL343 accel = Adafruit_ADXL343(12345, &Wire1);
/* Uncomment for software SPI */
Adafruit_ADXL343 accel = Adafruit_ADXL343(ADXL343_SCK, ADXL343_MISO, ADXL343_MOSI, ADXL343_CS, 12345);
/* Uncomment for hardware SPI */
//Adafruit_ADXL343 accel = Adafruit_ADXL343(ADXL343_CS, &SPI, 12345);
void displayDataRate(void)
{
Serial.print ("Data Rate: ");
switch(accel.getDataRate())
{
case ADXL343_DATARATE_3200_HZ:
Serial.print ("3200 ");
break;
case ADXL343_DATARATE_1600_HZ:
Serial.print ("1600 ");
break;
case ADXL343_DATARATE_800_HZ:
Serial.print ("800 ");
break;
case ADXL343_DATARATE_400_HZ:
Serial.print ("400 ");
break;
case ADXL343_DATARATE_200_HZ:
Serial.print ("200 ");
break;
case ADXL343_DATARATE_100_HZ:
Serial.print ("100 ");
break;
case ADXL343_DATARATE_50_HZ:
Serial.print ("50 ");
break;
case ADXL343_DATARATE_25_HZ:
Serial.print ("25 ");
break;
case ADXL343_DATARATE_12_5_HZ:
Serial.print ("12.5 ");
break;
case ADXL343_DATARATE_6_25HZ:
Serial.print ("6.25 ");
break;
case ADXL343_DATARATE_3_13_HZ:
Serial.print ("3.13 ");
break;
case ADXL343_DATARATE_1_56_HZ:
Serial.print ("1.56 ");
break;
case ADXL343_DATARATE_0_78_HZ:
Serial.print ("0.78 ");
break;
case ADXL343_DATARATE_0_39_HZ:
Serial.print ("0.39 ");
break;
case ADXL343_DATARATE_0_20_HZ:
Serial.print ("0.20 ");
break;
case ADXL343_DATARATE_0_10_HZ:
Serial.print ("0.10 ");
break;
default:
Serial.print ("???? ");
break;
}
Serial.println(" Hz");
}
void displayRange(void)
{
Serial.print ("Range: +/- ");
switch(accel.getRange())
{
case ADXL343_RANGE_16_G:
Serial.print ("16 ");
break;
case ADXL343_RANGE_8_G:
Serial.print ("8 ");
break;
case ADXL343_RANGE_4_G:
Serial.print ("4 ");
break;
case ADXL343_RANGE_2_G:
Serial.print ("2 ");
break;
default:
Serial.print ("?? ");
break;
}
Serial.println(" g");
}
void setup(void)
{
Serial.begin(115200);
while (!Serial);
Serial.println("Accelerometer Test"); Serial.println("");
/* Initialise the sensor */
if(!accel.begin())
{
/* There was a problem detecting the ADXL343 ... check your connections */
Serial.println("Ooops, no ADXL343 detected ... Check your wiring!");
while(1);
}
/* Set the range to whatever is appropriate for your project */
// accel.setRange(ADXL343_RANGE_16_G);
accel.setRange(ADXL343_RANGE_8_G);
//accel.setRange(ADXL343_RANGE_4_G);
// accel.setRange(ADXL343_RANGE_2_G);
/* Display some basic information on this sensor */
accel.printSensorDetails();
displayDataRate();
displayRange();
Serial.println("");
}
void loop(void)
{
/* Get a new sensor event */
sensors_event_t event;
accel.getEvent(&event);
/* Display the results (acceleration is measured in m/s^2) */
Serial.print("X:"); Serial.print(event.acceleration.x); Serial.print("\t");
Serial.print("Y:"); Serial.print(event.acceleration.y); Serial.print("\t");
Serial.print("Z:"); Serial.print(event.acceleration.z); Serial.print("\t");Serial.println("");
delay(50);
}
Distance VL53
![]() |
![]() |
---|---|
Schematic | PCB |
Code
#include "Adafruit_VL53L1X.h"
Adafruit_VL53L1X vl53 = Adafruit_VL53L1X();
void setup() {
Serial.begin(115200);
while (!Serial) delay(10);
Serial.println(F("Adafruit VL53L1X sensor demo"));
Wire.begin();
if (! vl53.begin(0x29, &Wire)) {
Serial.print(F("Error on init of VL sensor: "));
Serial.println(vl53.vl_status);
while (1) delay(10);
}
Serial.println(F("VL53L1X sensor OK!"));
Serial.print(F("Sensor ID: 0x"));
Serial.println(vl53.sensorID(), HEX);
if (! vl53.startRanging()) {
Serial.print(F("Couldn't start ranging: "));
Serial.println(vl53.vl_status);
while (1) delay(10);
}
Serial.println(F("Ranging started"));
// Valid timing budgets: 15, 20, 33, 50, 100, 200 and 500ms!
vl53.setTimingBudget(50);
Serial.print(F("Timing budget (ms): "));
Serial.println(vl53.getTimingBudget());
/*
vl.VL53L1X_SetDistanceThreshold(100, 300, 3, 1);
vl.VL53L1X_SetInterruptPolarity(0);
*/
}
void loop() {
int16_t distance;
if (vl53.dataReady()) {
// new measurement for the taking!
distance = vl53.distance();
if (distance == -1) {
// something went wrong!
Serial.print(F("Couldn't get distance: "));
Serial.println(vl53.vl_status);
return;
}
Serial.print(F("Distance: "));
Serial.print(distance);
Serial.println(" mm");
// data is read out, time for another reading!
vl53.clearInterrupt();
}
}
Potentiometer
![]() |
![]() |
---|---|
Schematic | PCB |
Code
//Phototransistor, potentiometer, and NTC thermistor analog read
const int light = A0;
const int pot = A1;
const int ntc = A2;
void setup() {
// put your setup code here, to run once:
pinMode(light, OUTPUT);
pinMode(pot, OUTPUT);
pinMode(ntc, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print("Light:"); Serial.print(analogRead(light)); Serial.print("\t");
Serial.print("Potentiometer:"); Serial.print(analogRead(pot)); Serial.print("\t");
Serial.print("NTC:"); Serial.print(analogRead(ntc)); Serial.print("\t");
Serial.println();
delay(50);
}
Light Phototransistor
![]() |
![]() |
---|---|
Schematic | PCB |
Code
//Phototransistor, potentiometer, and NTC thermistor analog read
const int light = A0;
const int pot = A1;
const int ntc = A2;
void setup() {
// put your setup code here, to run once:
pinMode(light, OUTPUT);
pinMode(pot, OUTPUT);
pinMode(ntc, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print("Light:"); Serial.print(analogRead(light)); Serial.print("\t");
Serial.print("Potentiometer:"); Serial.print(analogRead(pot)); Serial.print("\t");
Serial.print("NTC:"); Serial.print(analogRead(ntc)); Serial.print("\t");
Serial.println();
delay(50);
}
Temperature NTC
![]() |
![]() |
---|---|
Schematic | PCB |
Code
//Phototransistor, potentiometer, and NTC thermistor analog read
const int light = A0;
const int pot = A1;
const int ntc = A2;
void setup() {
// put your setup code here, to run once:
pinMode(light, OUTPUT);
pinMode(pot, OUTPUT);
pinMode(ntc, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print("Light:"); Serial.print(analogRead(light)); Serial.print("\t");
Serial.print("Potentiometer:"); Serial.print(analogRead(pot)); Serial.print("\t");
Serial.print("NTC:"); Serial.print(analogRead(ntc)); Serial.print("\t");
Serial.println();
delay(50);
}
Color VEML6040
![]() |
![]() |
---|---|
Schematic | PCB |