David Held
Published © GPL3+

Programmable Scalp Massager

15 programmable vibration motors mounted on a EEG cap.

BeginnerFull instructions provided10 hours1,837
Programmable Scalp Massager

Things used in this project

Hardware components

Pancake Vibrating 12mm Flat Motor
×15
Adafruit Metro Mini
×1
BraiNet Placement Cap
×1
Adafruit JST-PH 2-Pin SMT Right Angle Breakout Board
×15
Adafruit JST-PH Battery Extension Cable - 500mm
×15
Adafruit Perma-Proto Half-sized Breadboard PCB - Single
×1
9V battery (generic)
9V battery (generic)
×1
9V Battery Clip
9V Battery Clip
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Hot glue gun (generic)
Hot glue gun (generic)

Story

Read more

Schematics

Schematics

Scalp Massager

Code

Scalp Massager

Arduino
Just a couple of simple patterns for massaging different parts of the scalp.
//
//     5    4
//   6   13    3
// 7  10 14 11  2
//  8   12    1
//     9    0
const byte red = A1;
const byte yellow = A2;
const byte purple = 2;
const byte orange = 3;
const byte blue = 4;
const byte blueStripe = 5;
const byte orangeStripe = 6;
const byte purpleStripe = 7;
const byte yellowStripe = 8;
const byte redStripe = 9;

const byte greenStripe = 10;
const byte green = 11;
const byte grey = 12; //near top
const byte rose = 13; //back of head
const byte black = A0; //top

int r;

void setup() {
  for (int x = 0; x < 15; x++)
    pinMode (x, OUTPUT);
  randomSeed(analogRead(1));

}
void loop() {
  for (int x = 0; x < 10; x++)  {
    digitalWrite(x, HIGH);
    delay(1500);
    digitalWrite(x, LOW);
  }

  frontband(5000);
  
  digitalWrite(red, HIGH);
  digitalWrite(redStripe, HIGH);
  delay(1000);
  digitalWrite(red, LOW);
  digitalWrite(redStripe, LOW);

  digitalWrite(yellow, HIGH);
  digitalWrite(yellowStripe, HIGH);
  delay(1000);
  digitalWrite(yellow, LOW);
  digitalWrite(yellowStripe, LOW);

  digitalWrite(purple, HIGH);
  digitalWrite(purpleStripe, HIGH);
  delay(1000);
  digitalWrite(purple, LOW);
  digitalWrite(purpleStripe, LOW);

  digitalWrite(orange, HIGH);
  digitalWrite(orangeStripe, HIGH);
  delay(1000);
  digitalWrite(orange, LOW);
  digitalWrite(orangeStripe, LOW);

  digitalWrite(blue, HIGH);
  digitalWrite(blueStripe, HIGH);
  delay(1000);
  digitalWrite(blue, LOW);
  digitalWrite(blueStripe, LOW);

  digitalWrite(green, HIGH);
  digitalWrite(greenStripe, HIGH);
  delay(1000);
  digitalWrite(green, LOW);
  digitalWrite(greenStripe, LOW);

  digitalWrite(grey, HIGH);
  digitalWrite(rose, HIGH);
  delay(1000);
  digitalWrite(grey, LOW);
  digitalWrite(rose, LOW);

  digitalWrite(black, HIGH);
  delay(1000);
  digitalWrite(black, LOW);

  digitalWrite(red, HIGH);
  digitalWrite(redStripe, HIGH);
  delay(5000);

  digitalWrite(yellow, HIGH);
  digitalWrite(yellowStripe, HIGH);
  delay(5000);

  digitalWrite(purple, HIGH);
  digitalWrite(purpleStripe, HIGH);
  delay(5000);

  digitalWrite(orange, HIGH);
  digitalWrite(orangeStripe, HIGH);
  delay(5000);

  digitalWrite(blue, HIGH);
  digitalWrite(blueStripe, HIGH);
  delay(5000);

  digitalWrite(green, HIGH);
  digitalWrite(greenStripe, HIGH);
  delay(5000);

  digitalWrite(grey, HIGH);
  digitalWrite(rose, HIGH);
  delay(5000);

  digitalWrite(black, HIGH);
  delay(5000);

  for (int x = 0; x < 15; x++)  {
    digitalWrite(x, LOW);
  }
  for ( int x = 0; x < 30; x++)  {
    r = random(0, 15);
    if (r==14)
       r=A0;
    digitalWrite(r, HIGH);
    delay(750);
    digitalWrite(r, LOW);
  }

}
void frontband(int wait)  {
  for (int x = 0; x < 10; x++)
    digitalWrite(x, HIGH);
  delay(wait);
  for (int x = 0; x < 10; x++)
    digitalWrite(x, LOW);
}
void topHead(int wait)  {
  for (int x = 10; x < 15; x++)
    digitalWrite(x, HIGH);
  delay(wait);
  for (int x = 10; x < 15; x++)
    digitalWrite(x, LOW);
}

Credits

David Held

David Held

5 projects • 10 followers
maker teacher

Comments