Web USB receive from browser

Updated on 3 September 2021
dev board RobotDyn M0 mini
firmware Arduino
chip SAMD21
features WebUSB
This tutorial is more than 1 year old. If the steps below do not work, then please check the latest versions and the documentations of the individual tools used.

Before starting

Dependancies

Ensure the following dependancies are downloaded and available:

Pre-requisites

Try these simpler or similar examples:

Code

Download code webusb-receive.ino
#include <WebUSB.h>

// Modified from example https://webusb.github.io/arduino/demos/console
WebUSB WebUSBSerial(1, "webusb.github.io/arduino/demos/console");

const int ledPin = 13;

void setup() {
  WebUSBSerial.begin(9600);
  while (!Serial) {}
  delay(100);

  SerialUSB.begin(9600);
  delay(1000);

  SerialUSB.println("Start!");
  WebUSBSerial.write("Sketch begins");
  WebUSBSerial.flush();

  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (WebUSBSerial && WebUSBSerial.available()) {
    int byte = WebUSBSerial.read();

    if (byte == 'H') {
      SerialUSB.println("LED ON");
      WebUSBSerial.write("Turning LED on.");
      digitalWrite(ledPin, HIGH);
    } else if (byte == 'L') {
      SerialUSB.println("LED OFF");
      WebUSBSerial.write("Turning LED off.");
      digitalWrite(ledPin, LOW);
    }

    WebUSBSerial.flush();
  }
}

Makefile

BOARD?=arduino:samd:mzero_bl
PORT := $(shell ls /dev/cu.usbmodem*)

.PHONY: default lint all flash clean

default: lint all flash clean

lint:
	cpplint --extensions=ino --filter=-legal/copyright *.ino

all:
	arduino-cli compile --fqbn $(BOARD) ./

flash:
	arduino-cli upload -p $(PORT) --fqbn $(BOARD) ./

clean:
	rm -f .*.bin
	rm -f .*.elf
	rm -f .*.hex

Description

Turn on/off LED on-board compatible arduino hardware through the commands received H and L from the browser on the laptop which is connected to the hardware.

Use this firmware with the browser code.

References

Watch