Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Sobre o Sensor de Força
O sensor de força às vezes é chamado de resistor sensível à força, resistor sensor de força ou simplesmente FSR. É um tipo de resistor que altera sua resistência quando uma pressão é aplicada a ele.
Acessível e simples de operar.
Eficaz para detectar pressão física ou aperto.
Não é eficaz para medir o peso em libras.
O sensor de força é usado em baterias eletrônicas, celulares, consoles de jogos portáteis e muitos outros aparelhos eletrônicos portáteis.
Pinagem
Um sensor de força tem dois pinos. Como ele funciona como um resistor, não precisamos diferenciar esses pinos. Eles são idênticos.
Como Funciona
O sensor de força é como um resistor que muda sua resistência conforme a força com que é pressionado. Quanto mais forte você pressiona, menor é a resistência entre as duas pontas.
Diagrama de Ligação
This image is created using Fritzing. Click to enlarge image
O Arduino UNO R4 tem pinos identificados de A0 a A5 que são usados para entrada analógica. Esses pinos convertem a tensão, que vai de 0 volts a VCC, em números inteiros entre 0 e 1023. Esse número é conhecido como ADC ou valor analógico.
Ao conectar um pino do sensor de força a um pino de entrada analógica, podemos usar a função analogRead() para ler o valor analógico do pino. Isso nos diz quanta pressão está sendo aplicada.
Código Arduino UNO R4
/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-force-sensor*/#define FORCE_SENSOR_PIN A0 // The Arduino UNO R4 pin connected to the FSR force sensor with 10K pulldownvoidsetup() {Serial.begin(9600);}voidloop() {int analogReading = analogRead(FORCE_SENSOR_PIN);Serial.print("Force sensor reading = ");Serial.print(analogReading); // print the raw analog readingif (analogReading < 10) // from 0 to 9Serial.println(" -> no pressure");elseif (analogReading < 200) // from 10 to 199Serial.println(" -> light touch");elseif (analogReading < 500) // from 200 to 499Serial.println(" -> light squeeze");elseif (analogReading < 800) // from 500 to 799Serial.println(" -> medium squeeze");else// from 800 to 1023Serial.println(" -> big squeeze");delay(1000);}
Conecte o sensor de força ao Arduino Uno R4 conforme o diagrama fornecido.
Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
Abra a Arduino IDE no seu computador.
Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
Copie o código acima e abra-o na Arduino IDE.
Clique no botão Upload na Arduino IDE para fazer o upload do código para o Arduino UNO R4.
Pressione o sensor de força.
Confira o resultado no Serial Monitor.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
Force sensor reading = 0 -> no pressure
Force sensor reading = 0 -> no pressure
Force sensor reading = 132 -> light touch
Force sensor reading = 147 -> light touch
Force sensor reading = 394 -> light squeeze
Force sensor reading = 421 -> light squeeze
Force sensor reading = 607 -> medium squeeze
Force sensor reading = 791 -> medium squeeze
Force sensor reading = 921 -> big squeeze
Force sensor reading = 987 -> big squeeze
Force sensor reading = 0 -> no pressure
Force sensor reading = 0 -> no pressure
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2
Vídeo
O vídeo de demonstração abaixo usa o código abaixo:
/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-force-sensor*/#include <Wire.h>#include <Adafruit_GFX.h>#include <Adafruit_SSD1306.h>// OLED display configuration#define SCREEN_WIDTH 128#define SCREEN_HEIGHT 64#define OLED_RESET -1Adafruit_SSD1306display( SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);// Force-sensitive resistor input#define FORCE_SENSOR_PIN A0// LED pins used to indicate force levelconstint ledPins[8] = { 2, 3, 4, 5, 6, 7, 8, 9};// Calibrated force sensor rangeconstint FORCE_MIN = 0;constint FORCE_MAX = 1000;// Exponential moving average filterfloat smoothValue = 0;constfloat alpha = 0.3;// Initialize hardware and displayvoidsetup() {Serial.begin(115200);// Configure LED outputs and turn all LEDs off.for (int i = 0; i < 8; i++) {pinMode(ledPins[i], OUTPUT);digitalWrite(ledPins[i], LOW); }// Initialize the OLED using I2C communication.if (!display.begin( SSD1306_SWITCHCAPVCC, 0x3C )) {Serial.println("OLED failed!");// Stop execution if the OLED cannot be initialized.while (1); }display.clearDisplay();display.setTextColor(SSD1306_WHITE);// Display startup screen.display.setTextSize(2);display.setCursor(20, 25);display.println("DIYables");display.display();delay(1500);// Initialize the filter with the first sensor reading// to prevent an incorrect initial value. smoothValue = analogRead(FORCE_SENSOR_PIN);}voidloop() {// Read the current FSR value.int rawValue = analogRead(FORCE_SENSOR_PIN);// Apply exponential moving average filtering// to reduce sensor noise and fluctuations. smoothValue = alpha * rawValue + (1.0 - alpha) * smoothValue;int forceValue = (int)smoothValue;// Convert the sensor value into 8 force levels.int level = map( forceValue, FORCE_MIN, FORCE_MAX, 0, 8 ); level = constrain(level, 0, 8);// Turn on LEDs progressively according to the force level.for (int i = 0; i < 8; i++) {if (i < level) {digitalWrite(ledPins[i], HIGH); }else {digitalWrite(ledPins[i], LOW); } }// Output sensor data for monitoring and calibration.Serial.print("FSR = ");Serial.print(forceValue);Serial.print(" | Level = ");Serial.println(level);// Refresh OLED display.display.clearDisplay();// Display title.display.setTextSize(2);display.setCursor(50, 0);display.println("FSR");// Configure the force indicator as a battery-style bar.int barX = 10;int barY = 25;int barWidth = 108;int barHeight = 18;// Draw the outer bar.display.drawRect( barX, barY, barWidth, barHeight, SSD1306_WHITE );// Draw the battery terminal.display.fillRect( barX + barWidth, barY + 5, 4, 8, SSD1306_WHITE );// Calculate the filled portion based on the force level.int fillWidth = map( level, 0, 8, 0, barWidth - 4 );if (fillWidth > 0) {display.fillRect( barX + 2, barY + 2, fillWidth, barHeight - 4, SSD1306_WHITE ); }// Display current force level.display.setTextSize(1);display.setCursor(5, 50);display.print("LEVEL: ");display.print(level);display.print("/8");// Display project branding.display.setCursor(78, 50);display.print("DIYables");display.display();// Short delay for stable display updates.delay(30);}
Tutoriais Relacionados
※ NOSSAS MENSAGENS
Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!