# data[].attributes.body
Click for a list of daily suggestions from Youtube, Common Sense, Jr. NBA, Khan Academy and more.

# data[].attributes.attachment_link.readable_text
Wide Open School's mission lives on at Common Sense

With schools back in person, we have closed this dedicated distance-learning site designed to guide families and educators through the sudden shift to remote learning.
Discover More Great Resources for Families & Educators
Common Sense is dedicated to providing teachers and families with free resources to help kids learn, grow, and thrive with media and technology. Join our community for more tips and resources to support kids' learning and healthy development.

More Resources You'll Love

Get more free content like what you found on Wide Open School.
For Families For Educators
Thank You to Our Supporters & Partners

We are grateful to our supporters and partners for helping to bring these resources to kids, families, and educators everywhere during a global crisis. It is a testament to the power of creativity, collaboration, and a shared commitment to education and digital access for all.

# data[].attributes.attachment_link.description
Wide Open School's mission lives on at Common Sense With schools back in person, we have closed this dedicated distance-learning site designed to guide families and educators through the sudden shift to remote learning. Discover More Great Resources for Families & Educators

# data[].attributes.attachment_link.readable_text
If you're seeing this message, it means we're having trouble loading external resources on our website.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

# data[].attributes.attachment_link.title
Cryptography | Computer science theory | Computing | Khan Academy

# data[].attributes.attachment_link.description
How have humans protected their secret messages through history? What has changed today?

# data[].attributes.attachment_link.description
Origami tutorials ranging from easy to intermediate

# data[].attributes.attachment_link.readable_text
Contributors: Joel_E_B

Introduction

Welcome to the Experiment Guide for the SparkFun Inventor's Kit for MicroView, or the SIK for MicroView for short. This tutorial will guide you through eleven experiments to help you better understand your MicroView, and, once finished, you should have the knowledge necessary to make your MicroView project dreams a reality.

Included Materials

Before you do anything, you should make sure that you have all the necessary parts included with the SIK for MicroView. It's a good idea to familiarize yourself with the parts now, so you know what to look for when it comes time to build the circuits.

Suggested Reading

To make your MicroView experience as enjoyable as possible, we recommend you be familiar with the following concepts before beginning.

MicroView Overview

Let's first familiarize ourselves with the MicroView and its pins. Below you'll find a list of specifications as well as a graphical datasheet detailing the function(s) of each pin.

Hardware Specifications

Input Voltage : 3.3VDC - 16VDC

Display : 64x48 OLED Display

Microcontroller : ATmega328P

Operating Voltage : 5V

Digital I/O Pins : 12 (of which 3 provide PWM output)

Analog Input Pins : 6

Flash Memory : 32 KB

SRAM : 2 KB

EEPROM : 1 Kilobyte

Clock Speed : 16 Mhz

Pin Configuration

The MicroView has 16 "physical pins" that map to corresponding "Arduino pins" that can be referenced from within your Arduino sketch. For example, Physical Pin2 maps to the Arduino's pin A5 (analog pin 5).

Pinout of MicroView on it's side. The top of the MicroView is on the right. (Click image for closer look.)
The pin numbering for the MicroView increments as you move counter-clockwise.

The MicroView's physical Pin1 is denoted by a dot on the underside of the MicroView.

For more details on each pin's function, please refer to the ATmega328P Datasheet.

Quick Start Experiment

The MicroView comes with preinstalled code to get you learning right out of the box without having to do any programming. Using just a few components, you can learn the in's and out's of the MicroView.

Setting Up Your MicroView

Identify PIN 1 of MicroView based on the following diagram, or refer back to the MicroView Overview section.

In this guide, when there is a reference for PIN x of MicroView, it is referring to the above diagram's PIN number. For example, connect PIN 5 and PIN 8 of the MicroView.
MicroView with USB Programmer

The quickest way to get started is to use the USB programmer.

Insert the MicroView to the USB Programmer, then connect the female end of the USB extension cable to the factory USB Programmer.

Note that it is much easier to connect a USB extension cable if the MicroView is inserted into the end of the breadboard.

Connect the male end of the USB extension cable to the computer. The MicroView will power on, and the demo will start.

MicroView without USB Programmer

If you would like to use the MicroView without the USB Programmer, you will need the following ( please note that the 9V battery and snap connector will need to be purchased separately):

Connect the required parts based on the diagram below. Plug in the battery connectors last. Once plugged in, the 9V battery will power the MicroView through the VIN pin (PIN 1).

As soon as the MicroView is powered, the demo will start.

Learn How to Use MicroView

The MicroView comes pre-programmed with a few simple built-in tutorials to help you get use to inserting jumper wires, resistors and an LED. Skip these tutorials if you are already familiar with them. They will begin after the visual demo.

Note: The following examples are based on MicroView without the USB Programmer, if you have the USB Programmer, please ignore the battery, red jumper and black jumper. The MicroView gets its power supply from the USB Programmer via the USB cable connected to the computer.

Simple Tutorial 1

Follow the instruction displayed on the MicroView, and connect PIN 5 and PIN 8 of the MicroView with a jumper using the following diagram as reference:

Once you have successfully connected PIN 5 and PIN 8 of the MicroView, a "Well done!" message will be displayed. To proceed to the next simple tutorial, remove the jumper.

Simple Tutorial 2

Follow the instruction displayed on the MicroView, and connect PIN 3 and PIN 8 of the MicroView with a jumper using the following diagram as reference:

Once you have successfully connected PIN 3 and PIN 8 of the MicroView, a "Well done!" message will be displayed. To proceed to the next simple tutorial, remove the jumper.

Simple Tutorial 3

Follow the instruction displayed on the MicroView, and connect PIN 2 and PIN 8 of the MicroView with a jumper using the following diagram as reference:

Once you have successfully connected PIN 2 and PIN 8 of the MicroView, a "Well done!" message will be displayed. To proceed to the next simple tutorial, remove the jumper.

Simple Tutorial 4

Follow the instruction displayed on the MicroView, and connect PIN 4 and PIN 8 of the MicroView with a 330&ohm; resistor using the following diagram as reference:

Once you have successfully connected PIN 4 and PIN 8 of the MicroView with the resistor, a "Well done!" message will be displayed. To proceed to the next simple tutorial, remove the resistor.

Simple Tutorial 5

Follow the instruction displayed on the MicroView, and connect PIN 4 and PIN 8 of the MicroView with a 10K&ohm; resistor using the following diagram as reference:

Once you have successfully connected PIN 4 and PIN 8 of the MicroView with the resistor, a "Well done!" message will be displayed. To proceed to the next simple tutorial, remove the resistor.

Simple Tutorial 6

Follow the instruction displayed on the MicroView, connect PIN 5 and PIN 8 of the MicroView with a 330&ohm; resistor using the following diagram as reference:

With the resistor still at the same place, insert an LED with both of the pins at PIN 4 and PIN 5 of MicroView respectively using the following diagram as reference.

The MicroView is able to detect if the LED is inserted with the correct polarity, and it will begin blinking the LED.

If the LED does not blink, remove the LED and turn the pins the other way round and connect them to PIN 4 and PIN 5 of the MicroView.

With that, you are now ready to upload code and begin building the experiments in this guide.

If you would like to load the Demo Sketch back on to the MicroView after you have uploaded any other code, you can find the MicroViewDemo.ino sketch in the MicroView Library Examples.

Programming the MicroView

The following section will cover all the of the instructions to install the MicroView library and get started using the MicroView with the Arduino IDE.

In order to get your MicroView up and running, there a few easy steps you will need to follow:

1. Download the FTDI Drivers

2. Install Arduino software and MicroView Library

3. Select the right board

4. Run your first sketch

Driver Installation

If have never used an Arduino or Arduino compatible device on your computer before, you'll likely need to install the drivers for the FTDI chip located on the MicroView USB Programmer board. If you have never installed an FTDI Driver before, please visit our FTDI Driver Installation tutorial. Once successfully installed, your MicroView should show up as a valid COM Port in the Arduino IDE under Tools -> Ports.

On a Mac or Linux machine, it will appear as /dev/cu.usbmodemXXXXXX or as /dev/cu.usbserialXXXXXX, where the X's are some specific characters and numbers.

On Windows, it will appear as COMXX, where the X's are a specific number.

Once you have finished the FTDI driver installation, you will need to prepare your MicroView to be inserted into the computer's USB port.

If you're using the USB Programmer, insert the MicroView into the USB Programmer now. Be sure to align Pin 1 of the MicroView with Pin 1 of the USB Programmer. Once you have inserted the MicroView into the USB Programmer, you can now insert the USB Programmer into the USB port of the computer as pictured below. If your computer does not have a right-sided USB port, please use a USB Cable Extension to extend the USB port to the front so that you can easily work with the MicroView.

As an alternative to the USB Programmer, you can use a 5V FTDI Basic Breakout or 5V FTDI Cable instead. Connect the FTDI Basic Breakout board as below, and you are ready to go.

Install Arduino IDE and the MicroView Library

If you have not installed the Arduino IDE already, now is the time to do so. Visit our Installing the Arduino IDE tutorial for detailed instructions.

Download the library using the Arduino Library Manager (found in all version of the Arduino IDE from v1.6.4 and on).

Click Sketch -> Include Library -> Manger Libraries to open the Library Manger. Once open, type 'microview' in the search field. Install the SparkFun MicroView library by clicking on the library then clicking the install button. Once installed, there should be a blue 'installed' indicator next to the library.

You should now be able to find all the MicroView examples in your Arduino IDE skecthbook.

Board Selection

Once the Arduino IDE is up and running, you'll need to select the correct Board. Luckily, the MicroView is supported as an Arduino Uno variant, meaning no extra .brd files need to be installed to use the MicroView. Select Arduino Uno under Tools -> Boards.

In the Arduino IDE under Tools -> Ports, select the correct COM port. This is the port that was found in the Driver Installation section.

For advance user that like to see MicroView as a board by itself in the IDE, add the following board definition to the boards.txt file. Depending on your setup, the boards.txt file usually located at arduino-version\hardware\arduino folder. Replace arduino-version with the right folder name for your Arduino version installed in your computer.

uview.upload.tool=avrdude uview.bootloader.tool=avrdude uview.name=MicroView uview.upload.protocol=arduino uview.upload.maximum_size=32256 uview.upload.speed=115200 uview.bootloader.low_fuses=0xff uview.bootloader.high_fuses=0xde uview.bootloader.extended_fuses=0x05 uview.bootloader.path=optiboot uview.bootloader.file=optiboot_atmega328.hex uview.bootloader.unlock_bits=0x3F uview.bootloader.lock_bits=0x0F uview.build.mcu=atmega328p uview.build.f_cpu=16000000L uview.build.core=arduino uview.build.variant=standard

With the drivers and library installed and the correct settings in selected in the Arduino IDE, it's time to run our first program on the MicroView. The Hello World sketch in the next section will be the first code we upload to the MicroView.

LEDs (light-emitting diodes) are small, powerful lights that are used in many different applications. To start off the MicroView course, we will work on blinking an LED. That's right -- it's as simple as turning a light on and off. It might not seem like much, but establishing this important baseline will give you a solid foundation as we work toward more complex experiments. Blink is the " Hello World" of hardware.

Parts Needed

You will need the following parts:

Breadboard Setup

Pay close attention to the polarity of the LED.

Hook up your circuit as pictured below:

MicroView Arduino Code

Upload the following code to your MicroView:

language:c int LED = A3; // declare LED as pin A3 of MicroView void setup() { pinMode(LED, OUTPUT); // set LED pin as OUTPUT } void loop() { digitalWrite(LED, HIGH); // set LED pin HIGH voltage, LED will be on delay(1000); // delay 1000 ms digitalWrite(LED, LOW); // set LED pin LOW voltage, LED will be off delay(1000); // delay 1000 ms }

What You Should See

You should see your LED blink on and off. If it isn't, make sure you have assembled the circuit correctly and verified and uploaded the code to your MicroView or see the troubleshooting tips below.

Code to Note

Before you can use one of the MicroView's pins, you need to tell the MicroView whether it is an INPUT or OUTPUT. We use a built-in "function" called pinMode() to do this.

pinMode(A3, OUTPUT);

When you're using a pin as an OUTPUT, you can command it to be HIGH (output 5 volts), or LOW (output 0 volts).

digitalWrite(A3, HIGH);

Arduino programs run in a loop. When the MicroView sees the delay() command, it will pause the loop for the amount of time (in milliseconds). For example delay(1000) will stop the loop for one second as there are 1000 ms in one second.

Troubleshooting

LED Not Lighting Up?

LEDs will only work in one direction. Try taking it out and turning it around 180 degrees (no need to worry, installing it backward does no permanent harm).

Still No Success?

A broken circuit is no fun, send us an e-mail and we will get back to you as soon as we can: TechSupport@sparkfun.com

Experiment 2: Reading a Potentiometer

In this circuit, you'll work with a potentiometer. A potentiometer is also known as a variable resistor. When it's connected with 5 volts across its two outer pins, the middle pin outputs a voltage between 0 and 5, depending on the position of the knob on the potentiometer. A potentiometer is a perfect demonstration of a variable voltage divider circuit. The voltage is divided proportionate to the resistance between the middle pin and the ground pin. In this circuit, you'll learn how to use a potentiometer and display its value on the MicroView.

Parts Needed

You will need the following parts:

Breadboard Setup

Hook up your circuit as pictured below:

MicroView Arduino Code

Upload the following code to your MicroView:

language:c #include <MicroView.h> // include MicroView library MicroViewWidget *widget; // create widget pointer MicroViewWidget *widget2; // create widget pointer int sensorPin = A1; // select the input pin for the potentiometer int sensorValue = 0; // variable to store the value coming from the sensor void setup() { digitalWrite(sensorPin, HIGH); // Internal Pull-up pinMode(sensorPin, INPUT); // make pin as INPUT uView.begin(); // start MicroView uView.clear(PAGE); // clear page widget = new MicroViewSlider(0, 0, 0, 1024); // make widget as Slider widget2 = new MicroViewSlider(0, 20, 0, 1024, WIDGETSTYLE1); // make widget as Silder STYLE1 uView.display(); // display the content in the screen buffer } void loop() { sensorValue = analogRead(sensorPin); // read sensorPin widget->setValue(sensorValue); // set value of sensorPin to widget widget2->setValue(sensorValue); // set value of sensorPin to widget uView.display(); // display the content in the screen buffer }

What You Should See

By turning the potentiometer's knob you should see on your MicroView's display two different styles of widget reflect the reading of the potentiometer.

Code to Note

A "variable" is a stored value you've given a name to. You must introduce, or "declare" variables before you use them; here we're declaring a variable called sensorValue, of type "int" (integer). Don't forget that variable names are case-sensitive!

int sensorValue;

We use the analogRead() function to read the value on an analog pin. analogRead() takes one parameter, the analog pin you want to use ("sensorPin"), and returns a number ("sensorValue") between 0 (0 volts) and 1023 (5 volts).

sensorValue = analogRead(sensorPin);

Troubleshooting

LED Not Lighting Up?

LEDs will only work in one direction. Try taking it out and turning it around 180 degrees (no need to worry, installing it backward does no permanent harm).

Still No Success?

A broken circuit is no fun, send us an e-mail and we will get back to you as soon as we can: TechSupport@sparkfun.com

Experiment 3: RGB LED

You know what's even more fun than a blinking LED? Changing colors with one LED. RGB, or red-green-blue, LEDs have three different color-emitting diodes that can be combined to create all sorts of colors. In this circuit, you'll learn how to use an RGB LED to create unique color combinations. Depending on how bright each diode is, nearly any color is possible!

Parts Needed

You will need the following parts:

Breadboard Setup

Be sure to pay close attention to the polarity of the RGB LED.

Hook up your circuit as pictured below:

MicroView Arduino Code

language:c #include <MicroView.h> // include MicroView library MicroViewWidget *redWidget, *greenWidget, *blueWidget; // declare 3 widget pointers int RED = 6; // declare RED LED pin 6 int GREEN = 5; // declare GREEN LED pin 5 int BLUE = 3; // declare BLUE LED pin 3 int fadeStep = 10; // declare fading steps int dly=20; // declare delay void setup() { uView.begin(); // start MicroView uView.clear(PAGE); // clear page redWidget = new MicroViewSlider(0,0,0,255); // declare RED widget as slider greenWidget = new MicroViewSlider(0,10,0,255); // declare GREEN widget as slider blueWidget = new MicroViewSlider(0,20,0,255); // declare BLUE widget as slider pinMode(RED, OUTPUT); // set RED LED pin as OUTPUT pinMode(GREEN, OUTPUT); // set GREEN LED pin as OUTPUT pinMode(BLUE, OUTPUT); // set BLUE LED pin as OUTPUT } void loop() { int i; // init i variable for general use // brightening for (i=0;i<=255;i+=fadeStep) { // step i from 0 to 255 by fadeSteps redWidget->setValue(i); // set brightness value for RED LED to widget uView.display(); // display the content of the screen buffer analogWrite(RED,i); // set brightness value for RED LED to the pin delay(dly); } // dimming for (i=255;i>=0;i-=fadeStep) { // step i from 255 to 0 by fadeSteps redWidget->setValue(i); uView.display(); analogWrite(RED,i); delay(dly); } // brightening for (i=0;i<=255;i+=fadeStep) { greenWidget->setValue(i); uView.display(); analogWrite(GREEN,i); delay(dly); } // dimming for (i=255;i>=0;i-=fadeStep) { greenWidget->setValue(i); uView.display(); analogWrite(GREEN,i); delay(dly); } // brightening for (i=0;i<256;i+=fadeStep) { blueWidget->setValue(i); uView.display(); analogWrite(BLUE,i); delay(dly); } // dimming for (i=255;i>=0;i-=fadeStep) { blueWidget->setValue(i); uView.display(); analogWrite(BLUE,i); delay(dly); } }

What You Should See

You should see your RGB LED go through a colorful sequence of various colors with the slider widget showing the value of each color channel's brightness.

Code to Note

A for() loop is used to step a number across a range, and repeatedly runs code within the brackets {} until a condition is met. We use for loops to change over time the intensity of our RGB pin's brightness. The variable "i" starts a 0, ends at 255, and increases by the amount of the variable fadeStep.

for (i=0;i<=255;i+=fadeStep) {}

The MicroView is very very fast, capable of running thousands of lines of code each second. To slow it down so that we can see what it's doing, we'll often insert delays into the code. delay() counts in milliseconds; there are 1000 ms in one second.

Troubleshooting

LED Remains Dark or Shows Incorrect Color

With the four pins of the LED so close together, it's sometimes easy to misplace one. Double check each pin is where it should be.

Seeing Red

The red diode within the RGB LED may be a bit brighter than the other two. To make your colors more balanced, use a higher Ohm resistor. Or adjust in code. Change

analogWrite(RED,i);

to

analogWrite(RED,i/3);

Still No Success?

A broken circuit is no fun, send us an e-mail and we will get back to you as soon as we can: TechSupport@sparkfun.com

Pulse-Width Modulation

We've seen that the Arduino can read analog voltages (voltages between 0 and 5 volts) using the analogRead() function. Is there a way for the MicroView to output analog voltages as well?

The answer is no... and yes. The MicroView does not have a true analog voltage output. But, because the MicroView is so fast, it can fake it using something called PWM ("Pulse-Width Modulation").

Pins named 3, 5, and 6 within the Arduino code, map to the MicoView physical pins of 12, 13, and 14. Each of these pins are PWM/analogWrite out compatible.

PWM varies the amount of time that a blinking pin spends HIGH vs. the time it spends LOW. If the pin spends most of its time HIGH, a LED connected to that pin will appear bright. If it spends most of its time LOW, the LED will look dim. Because the pin is blinking much faster than your eye can detect, the MicroView creates the illusion of a "true" analog output.

Experiment 4: Push Buttons

In this circuit, we'll be looking at one of the most common and simple inputs - a push button. The way a push button works with this MicroView tutorial is that when the button is pushed, the contacts in the button connects to the ground, MicroView reads this and reacts accordingly.

Parts Needed

You will need the following parts:

Breadboard Setup

Hook up your circuit as pictured below:

MicroView Arduino Code

language:c #include <MicroView.h> // include MicroView library int buttonPin = A0; // push button pin int buttonState = 0; // variable to store the pushbutton status void setup() { uView.begin(); // start MicroView uView.clear(PAGE); // clear page pinMode(buttonPin, INPUT); // initialize the pushbutton pin as an input digitalWrite(buttonPin,HIGH); // set Internal pull-up } void loop() { buttonState = digitalRead(buttonPin); // read the state of the pushbutton value // check if the pushbutton is pressed. // if it is not pressed, the buttonState is HIGH: if (buttonState == HIGH) { uView.setCursor(0,0); // set cursor at 0,0 uView.print("OFF"); // print OFF uView.display(); } else { uView.setCursor(0,0); uView.print("ON "); uView.display(); } }

What You Should See

You should see your MicroView print "ON" if you push the button, and "OFF" if you let go. (See the code to find out why!) If it isn't working, make sure you have assembled the circuit correctly and verified and uploaded the code to your MicroView or see the troubleshooting tips below.

Code to Note

The digital pins can be used as inputs as well as outputs. Before you do either, you need to tell the MicroView which direction you're going.

pinMode(buttonPin, INPUT);

To read a digital input, you use the digitalRead() function. It will return HIGH if there's 5V present at the pin, or LOW if there's 0V present at the pin.

buttonState = digitalRead(buttonPin);

Because we've connected the button to GND, it will read LOW when it's being pressed. Here we're using the "equivalence" operator ("==") to see if the button is being pressed.

if (buttonState == LOW)

Troubleshooting

Light Not Turning On

The pushbutton is square, and because of this it is easy to put it in the wrong way. Rotate the button by 90 degrees and see if it starts working.

Underwhelmed

No worries, these circuits are all super stripped down to make playing with the components easy, but once you throw them together the sky is the limit.

Still No Success?

A broken circuit is no fun, send us an e-mail and we will get back to you as soon as we can: TechSupport@sparkfun.com

Getting Logical

One of the things that makes the MicroView so useful is that it can make complex decisions based on the input it's getting. For example, you could make a thermostat that turns on a heater if it gets too cold, a fan if it gets too hot, waters your plants if they get too dry, etc.

You can combine these functions to build complex if() statements.

if ((mode == heat) && ((temperature < threshold) || (override == true))) { digitalWrite(HEATER, HIGH); }

...will turn on a heater if you're in heating mode AND the temperature is low, OR if you turn on a manual override. Using these logic operators, you can program your MicroView to make intelligent decisions and take control of the world around it! To learn more about logic, check out our tutorial on digital logic.

To learn more about the different types of buttons and switches you can use in your projects, visit the Switch Basics tutorial.

Experiment 5: Photoresistors

You've already played with a potentiometer, which varies resistance based on the twisting of a knob. In this circuit, you'll be using a photoresistor (also known as a photocell), which changes resistance based on how much light the sensor receives.

Parts Needed

You will need the following parts:

Breadboard Setup

Hook up your circuit as pictured below:

MicroView Arduino Code

language:c #include <MicroView.h> // include MicroView library MicroViewWidget *widget; // declare widget pointer int sensorPin = A2; // select the input pin for the photoresistor int sensorValue = 0; // variable to store the value coming from the sensor void setup() { pinMode(sensorPin,INPUT); // set sensor pin as INPUT digitalWrite(sensorPin,HIGH); // set Internal pull-up uView.begin(); // start MicrView uView.clear(PAGE); // clear page widget = new MicroViewGauge(32,24,0,1023,WIDGETSTYLE1); // set widget as gauge STYLE1 } void loop() { sensorValue= analogRead(sensorPin); // read value from sensorPin widget->setValue(sensorValue); // set the sensorValue to the gauge widget uView.display(); // display the widget }

What You Should See

You should see the potentiometer value being displayed on the MicroView's display.

Code to Note

A "variable" is a stored value you've given a name to. You must introduce, or "declare" variables before you use them; here we're declaring a variable called sensorValue, of type "int" (integer). Don't forget that variable names are case-sensitive!

int sensorValue;

We use the analogRead() function to read the value on an analog pin. analogRead() takes one parameter, the analog pin you want to use ("sensorPin"), and returns a number ("sensorValue") between 0 (0 volts) and 1023 (5 volts).

sensorValue = analogRead(sensorPin);

Troubleshooting

Sporadically Working

This is most likely due to a slightly dodgy connection with the photoresistor's pins. This can usually be conquered by pushing the photoresistor down into the breadboard.

Still No Success?

A broken circuit is no fun, send us an e-mail and we will get back to you as soon as we can: TechSupport@sparkfun.com

Pull-up Resistors

Many of the sensors you'll use (potentiometers, photoresistors, etc.) are resistors in disguise. Their resistance changes in proportion to whatever they're sensing (light level, temperature, sound, etc.).

The MicroView's analog input pins measure voltage, not resistance. But we can easily read voltage by using the MicroView's internal pull-up resistors. Visit our pull-up resistors tutorial for more info. To get the most out of your photoresistor, we recommend replacing one of the resistors in a voltage divider circuit with a photoresistor.

Experiment 6: Temperature Sensor

A temperature sensor is exactly what it sounds like - a sensor used to measure ambient temperature. This particular sensor has three pins - a positive, a ground, and a signal. This is a linear temperature sensor. A change in temperature of one degree centigrade is equal to a change of 10 millivolts at the sensor output. The TMP36 sensor has a nominal 750 mV at 25°C (about room temperature). In this circuit, you'll learn how to integrate the temperature sensor with your MicroView, and use the serial monitor to display the temperature.

Heads up! When you're building the circuit be careful not to mix up the transistor and the temperature sensor, they're almost identical. Look for "TMP" on the body of the temperature sensor.

Parts Needed

You will need the following parts:

Breadboard Setup

Hook up your circuit as pictured below:

Be sure to insert the TMP36 in the correct orientation. It is polarized and will not work if inserted incorrectly.

Once you are sure orientation is correct, you can place the remaining jumper wires.

MicroView Arduino Code

language:c #include <MicroView.h> // include MicroView library MicroViewWidget *widget; // declare widget pointer int sensorPin = A0; // select the input pin for the temperature sensor int sensorValue = 0; // variable to store the value coming from the sensor void setup() { pinMode(sensorPin,INPUT); // set sensor pin as INPUT uView.begin(); // start MicroView uView.clear(PAGE); // clear page widget = new MicroViewGauge(32,24,0,255,WIDGETSTYLE1); // declare as gauge widget uView.drawChar(47,33,67); // Character C is ASCII code 67 } void loop() { sensorValue= analogRead(sensorPin); // read sensor pin value float voltage = sensorValue * 5.0; // voltage at pin in volt voltage /= 1024.0; // voltage = sensorValue x (5/1024) float temperatureC = (voltage - 0.5) * 100 ; // C = (voltage - 0.5) x 100 widget->setValue(temperatureC); // set temperature value to the gauge uView.display(); // display gauge tick }

What You Should See

As you warm and cool your temperature sensor, you should be able to see the gauge on your MicroView's display go up or down.

Troubleshooting

Temperature Value is Unchanging

Try pinching the sensor with your fingers to heat it up or pressing a bag of ice against it to cool it down.

Still No Success?

A broken circuit is no fun, send us an e-mail and we will get back to you as soon as we can: TechSupport@sparkfun.com

Experiment 7: Servo Motors

Servos are ideal for embedded electronics applications because they do one thing very well that motors cannot - they can move to a position accurately. By varying the pulse width of the output voltage to a servo, you can move a servo to a specific position. For example, a pulse of 1.5 milliseconds will move the servo 90 degrees. In this circuit, you'll learn how to use PWM (pulse width modulation) to control and rotate a servo. To learn more about PWM, visit our tutorial.

Parts Needed

You will need the following parts:

Breadboard Setup

Connect 3x jumper wires to the female 3 pin header on the servo. This will make it easier to breadboard the servo.

Hook up your circuit as pictured below:

MicroView Arduino Code

language:c #include <MicroView.h> // include MicroView library #include <Servo.h> // include Servo library Servo servo; // declare servo object void setup() { uView.begin(); // start MicroView uView.clear(PAGE); // clear page servo.attach(6); // servo control pin at D6 } void loop() { uView.setCursor(0,0); // set cursor to 0,0 uView.print("Mid "); // display Mid uView.display(); servo.write(90); // about 90 degree delay(2000); // delay 2 seconds uView.setCursor(0,0); uView.print("Left "); uView.display(); servo.write(20); // about 20 degree delay(2000); uView.setCursor(0,0); uView.print("Mid "); uView.display(); servo.write(90); // about 90 degree delay(2000); uView.setCursor(0,0); uView.print("Right"); uView.display(); servo.write(160); // about 160 degree delay(2000); }

What You Should See

You should see your servo motor move to various locations at several speeds. If the motor doesn't move, check your connections and make sure you have verified and uploaded the code, or see the troubleshooting tips below.

Code to Note

#include is a special "preprocessor" command that inserts a library (or any other file) into your sketch. You can type this command yourself, or choose an installed library from the "sketch / import library" menu.

The servo library adds new commands that let you control a servo. To prepare the Arduino to control a servo, you must first create a Servo "object" for each servo (here we've named it "servo"), and then "attach" it to a digital pin (here we're using digital pin 6).

Servo servo; servo.attach(6);

The servo in this kit doesn't spin all the way around, but they can be commanded to move to a specific position. We use the servo library's write() command to move a servo to a specified number of degrees(0 to 160). Remember that the servo requires time to move, so give it a short delay() if necessary.

servo.write(160);

Troubleshooting

Servo Not Twisting

Even with colored wires it is still shockingly easy to plug a servo in backward. This might be the case.

Still Not Working

A mistake we made a time or two was simply forgetting to connect the power (red and brown wires) to +5 volts and ground.

Fits and Starts

If the servo begins moving then twitches, and there's a flashing light on your MicroView, the power supply you are using is not quite up to the challenge. Try using a USB adapter that provides more current.

Still No Success?

A broken circuit is no fun, send us an e-mail and we will get back to you as soon as we can: TechSupport@sparkfun.com

Experiment 8: Piezo Buzzer

Introduction

In this circuit, we'll again bridge the gap between the digital world and the analog world. We'll be using a Piezo buzzer that makes a small "click" when you apply voltage to it (try it!). By itself that isn't terribly exciting, but if you turn the voltage on and off hundreds of times a second, the buzzer will produce a tone. And if you string a bunch of tones together, you've got music! This circuit and sketch will play a classic tune. We'll never let you down!

Parts Needed

You will need the following parts:

Breadboard Setup

Hook up your circuit as pictured below:

MicroView Arduino Code

language:c #include <MicroView.h> // adapted from SparkFun Inventor Kit https://www.sparkfun.com/products/12001 // Please download the original source code for detail comment of the source code // http://cdn.sparkfun.com/datasheets/Kits/SIK%20Guide%20Code.zip const int buzzerPin = A0; const int songLength = 18; char notes[] = "cdfda ag cdfdg gf "; // a space represents a rest int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2}; int tempo = 150; void setup() { uView.begin(); uView.clear(PAGE); pinMode(buzzerPin, OUTPUT); } void loop() { int i, duration; for (i = 0; i < songLength; i++) // step through the song arrays { duration = beats[i] * tempo; // length of note/rest in ms if (notes[i] == ' ') // is this a rest? { uView.print(" "); uView.display(); delay(duration); // then pause for a moment } else // otherwise, play the note { uView.print(notes[i]); uView.display(); tone(buzzerPin, frequency(notes[i]), duration); delay(duration); // wait for tone to finish } delay(tempo/10); // brief pause between notes } // We only want to play the song once, so we'll pause forever: while(true){} // If you'd like your song to play over and over, // remove the above statement } int frequency(char note) { // This function takes a note character (a-g), and returns the // corresponding frequency in Hz for the tone() function. int i; const int numNotes = 8; // number of notes we're storing // The following arrays hold the note characters and their // corresponding frequencies. The last "C" note is uppercase // to separate it from the first lowercase "c". If you want to // add more notes, you'll need to use unique characters. // For the "char" (character) type, we put single characters // in single quotes. char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523}; // Now we'll search through the letters in the array, and if // we find it, we'll return the frequency for that note. for (i = 0; i < numNotes; i++) // Step through the notes { if (names[i] == note) // Is this the one? { return(frequencies[i]); // Yes! Return the frequency } } return(0); // We looked through everything and didn't find it, // but we still need to return a value, so return 0. }

What You Should See

You should see - well, nothing; but you should be able to hear a song. If it isn't working, make sure you have assembled the circuit correctly and verified and uploaded the code to your MicroView or see the troubleshooting tips below.

Code to Note

Up until now we've been working solely with numerical data, but the Arduino can also work with text. Characters (single, printable, letters, numbers and other symbols) have their own type, called "char". When you have an array of characters, it can be defined between double-quotes (also called a "string"), OR as a list of single-quoted characters.

char notes[] = "cdfda ag cdfdg gf "; char names[] = {'c','d','e','f','g','a','b','C'};

One of Arduino's many useful built-in commands is the tone() function. This function drives an output pin at a certain frequency, making it perfect for driving buzzers and speakers. If you give it a duration (in milliseconds), it will play the tone then stop. If you don't give it a duration, it will keep playing the tone forever (but you can stop it with another function, noTone() ).

tone(pin, frequency, duration);

Troubleshooting

No Sound

Given the size and shape of the piezo element it is easy to miss the right holes on the breadboard. Try double checking its placement.

Can't Think While the Melody is Playing

Just pull up the piezo element whilst you think, upload your program then plug it back in.

Still No Success?

A broken circuit is no fun, send us an e-mail and we will get back to you as soon as we can: TechSupport@sparkfun.com

Experiment 9: Spinning a Motor

Introduction

Remember before when you played around with a servo motor? Now we are going to tackle spinning a motor. This requires the use of a transistor, which can switch a larger amount of current than the MicroView can. When using a transistor, you just need to make sure its maximum specs are high enough for your use. The transistor we are using for this circuit is rated at 40V max and 200 milliamps max - perfect for our toy motor! When the motor is spinning and suddenly turned off, the magnetic field inside it collapses, generating a voltage spike. This can damage the transistor. To prevent this, we use a "flyback diode", which diverts the voltage spike around the transistor.

Parts Needed

You will need the following parts:

Breadboard Setup

Pay close attention when building this circuit as there are two polarized parts that must be inserted into the breadboard correctly in order for this circuit to work.

The first polarized part is the transistor.

The second is the diode.

Hook up the rest of your circuit as pictured below:

MicroView Arduino Code

language:c #include <MicroView.h> // include MicroView library int motorPIN = 3; // set motor control pin MicroViewWidget *widget; // declare widget pointer void setup() { uView.begin(); // start MicroView uView.clear(PAGE); // clear page pinMode(motorPIN, OUTPUT); // initialize the digital pin as an output. widget = new MicroViewGauge(32,24,90,255,WIDGETSTYLE1); // set widget as gauge STYLE1 setPwmFrequency(motorPIN,1); // set PWM frequency to about 31K } void loop() { for (int i=90;i<255;i+=10) { // step i from 90 to 255 by step of 10 widget->setValue(i); // set i value to gauge uView.display(); // display gauge analogWrite(motorPIN, i); // set the DUTY cycle of the motorPIN delay(500); // delay 500 ms } } // function to set the frequency of the PWM pin // adapted from http://playground.arduino.cc/Code/PwmFrequency void setPwmFrequency(int pin, int divisor) { byte mode; if(pin == 5 || pin == 6 || pin == 9 || pin == 10) { switch(divisor) { case 1: mode = 0x01; break; case 8: mode = 0x02; break; case 64: mode = 0x03; break; case 256: mode = 0x04; break; case 1024: mode = 0x05; break; default: return; } if(pin == 5 || pin == 6) { TCCR0B = TCCR0B & 0b11111000 | mode; } else { TCCR1B = TCCR1B & 0b11111000 | mode; } } else if(pin == 3 || pin == 11) { switch(divisor) { case 1: mode = 0x01; break; case 8: mode = 0x02; break; case 32: mode = 0x03; break; case 64: mode = 0x04; break; case 128: mode = 0x05; break; case 256: mode = 0x06; break; case 1024: mode = 0x7; break; default: return; } TCCR2B = TCCR2B & 0b11111000 | mode; } }

What You Should See

The DC Motor should spin if you have assembled the circuit's components correctly, and also verified/uploaded the correct code. If your circuit is not working check the troubleshooting section below.

Code to Note

In this code, we use the command setPwmFrequency(motorPIN,1); to call a function (an encapsulated section of resuable code) for setting the PWM Frequency. Pulse Width Modulation, or PWM, is a technique for getting analog results with digital means. Digital control is used to create a square wave, a signal switched between on and off.

The setPwmFrequency function is defined on line 25.

void setPwmFrequency(int pin, int divisor){ ... }

Troubleshooting

USB Port not providing enough power or tripping?

Some USB ports don't provide enough current to spin the motor. If that's the case with a USB port on your computer we recommend powering your MicroView and motor with a powered USB hub or by using batteries. Checkout this circuit for powering your motor with batteries.

Motor Not Spinning

If you sourced your own transistor, double check with the data sheet that the pinout is compatible with a P2N2222AG (many are reversed).

Still No Luck

If you sourced your own motor, double check that it will work with 5 volts and that it does not draw too much power.

Still No Success?

A broken circuit is no fun, send us an e-mail and we will get back to you as soon as we can: TechSupport@sparkfun.com

Experiment 10: Relays

A relay is basically an electrically controlled mechanical switch. Inside that harmless looking plastic box is an electromagnet that, when it gets a jolt of energy, causes a switch to trip. In this circuit, you'll learn how to control a relay like a pro - giving your MicroView even more powerful abilities!

Parts Needed

You will need the following parts:

Breadboard Setup

Hook up your circuit as pictured below. Be cautious of polarized parts. Refer back to previous experiments to see how each component is oriented. For the relay, pay attention to which side has two pins and which has three pins.

MicroView Arduino Code

language:c #include <MicroView.h> // include MicroView library int relayPin = 2; // set relayPin as pin 2 of Arduino void setup() { uView.begin(); // start MicroView uView.clear(PAGE); // clear page pinMode(relayPin, OUTPUT); // initialize the digital pin as an output. } void loop() { uView.setCursor(0,0); // set cursor at 0,0 uView.print("YELLOW"); // print YELLOW text uView.display(); // display digitalWrite(relayPin, HIGH); // turn the RELAY ON (HIGH is the voltage level) delay(1000); // wait for a second uView.setCursor(0,0); uView.print("RED "); uView.display(); digitalWrite(relayPin, LOW); // turn the RELAY off by making the voltage LOW delay(1000); // wait for a second }

What You Should See

You should be able to hear the relay contacts click, and see the two LEDs alternate illuminating at 1-second intervals. If you don't, double-check that you have assembled the circuit correctly, and uploaded the correct sketch to the MicroView. Also, see the troubleshooting tips below.

Code to Note

When we turn on the transistor, which in turn energizes the relay's coil, the relay's switch contacts are closed. This connects the relay's COM pin to the NO (Normally Open) pin. Whatever you've connected using these pins will turn on. (Here we're using LEDs, but this could be almost anything.)

digitalWrite(relayPin, HIGH);

The relay has an additional contact called NC (Normally Closed). The NC pin is connected to the COM pin when the relay is OFF. You can use either pin depending on whether something should be normally on or normally off. You can also use both pins to alternate power to two devices, much like railroad crossing warning lights.

digitalWrite(relayPin, LOW);

Troubleshooting

LEDs Not Lighting

Double-check that you've plugged them in correctly. The longer lead (and non-flat edge of the plastic flange) is the positive lead.

No Clicking Sound

The transistor or coil portion of the circuit isn't quite working. Check the transistor is plugged in the right way.

Not Quite Working

The included relays are designed to be soldered rather than used in a breadboard. As such you may need to press it in to ensure it works (and it may pop out occasionally). When you're building the circuit be careful not to mix up the temperature sensor and the transistor, they're almost identical.

Still No Success?

A broken circuit is no fun, send us an e-mail and we will get back to you as soon as we can: TechSupport@sparkfun.com

Experiment 11: Soft Potentiometer

Introduction

In this circuit you'll work with a soft potentiometer. Back in Experiment 2, you used a regular potentiometer to vary the resistance of a circuit. With the soft pot, you can do all the same things you would with a regular potentiometer. However, this time the interface changes, showing you how you can accomplish the same tasks with different forms of the same technology or with different technologies altogether.

Parts Needed

You will need the following parts:

Breadboard Setup

Hook up your circuit as pictured below. The soft pot is polarized, so pay attention to its orientation. The side with the adhesive back is the bottom, and the side with the touch strips is the top (as pictured below).

MicroView Arduino Code

language:c #include <MicroView.h> // include MicroView library MicroViewWidget *widget; // declare widget pointer int sensorValue; // declare variable to store sensor value int sensorPin=A0; // declare sensor pin as A0 of Arduino void setup() { uView.begin(); // start MicroView uView.clear(PAGE); // clear page widget = new MicroViewSlider(0,0,0,1024, WIDGETSTYLE1); // declare widget as slider pinMode(sensorPin, INPUT); // set sensor pin as INPUT } void loop () { sensorValue=analogRead(sensorPin); // read and store sensor value widget->setValue(sensorValue); // set sensor value to widget uView.display(); // display widget delay(20); // delay 20 ms }

What You Should See

As you move a blunt long object (like your finger) up and down the soft potentiometer, the MicroView Slider Widget should change it's value accordingly. If it isn't working, make sure you have assembled the circuit correctly and verified and uploaded the code to your MicroView, or see the troubleshooting tips below.

Troubleshooting

Bizarre Results

The most likely cause of this is if you're pressing the potentiometer in more than one position. This is normal and can actually be used to create some neat results.

Still No Success?

A broken circuit is no fun, send us an e-mail and we will get back to you as soon as we can: TechSupport@sparkfun.com

Resources and Going Further

Congratulations, you have completed the SparkFun Inventor's Kit for MicroView! From here, the world is your oyster. Here are some more resources to aid in your understanding of the MicroView.

Check out these other experiment guides for more learning fun!

# data[].attributes.attachment_link.description
Contributors: Joel_E_B Welcome to the Experiment Guide for the SparkFun Inventor's Kit for MicroView, or the SIK for MicroView for short. This tutorial will guide you through eleven experiments to help you better understand your MicroView, and, once finished, you should have the knowledge necessary to make your MicroView project dreams a reality.

# data[].attributes.attachment_link.title
Tinkercad | From mind to design in minutes

# data[].attributes.attachment_link.description
Tinkercad is a free, easy-to-use app for 3D design, electronics, and coding.

# data[].attributes.attachment_link.title
Copy of STEM Resource Guide Celebrating Black Excellence

# data[].attributes.attachment_link.description
Groove Pizza is a playful tool for creating grooves using math concepts like shapes, angles, and patterns. Start working with one of the special pizza presets and add/remove toppings to adjust the groove, or click on the Shape Pizza tab and drag various shapes onto the big circle to play and explore math-inspired grooves. Share your creation on social media, or continue your groove over at the online digital audio workstation at Soundtrap.com.

# data[].attributes.attachment_link.title
Storyboard That: Free Online Storyboard Creator

# data[].attributes.attachment_link.description
Storyboard That: Create free storyboards online with ease. Design visuals, comics, and graphic organizers. Try it now and start creating!

# data[].attributes.attachment_link.readable_text
Narration: In March of 1942 - German U-boats prowled the vast Atlantic ocean in wolf packs... attacking scores of Allied transport ships as they headed toward war-torn Europe. In less than three months, the Nazi submarines had sunk more than a million tons of desperately-needed supplies and killed thousands of soldiers.

The U-boat captains had a secret weapon -- encrypted messages sent by Nazi spies in South America had provided them with the coordinates of the targeted ships.

Rose Mary Sheldon, Historian: We're talking about networks all over South America. An entire front in the second World War...

But America had on its side one of the most skilled codebreakers in the world - Elizebeth Friedman.

David Hatch, Senior Historian, NSA: She was a suburban mom. Nothing really to mark her as anything unusual. But, she lived a double life.

Narration: In WWI Friedman had trained the first team of codebreakers for the US military. During Prohibition she had taken on the most powerful gangsters in the country and brought down an international rum-running operation.

Barbara Osteika, Federal Law Enforcement Historian: The gangsters put a hit out on Elizebeth and the Coast Guard puts a protection detail on her...

Narration: Now, as she decrypted the intercepted messages on her desk, she knew everything she had learned in her career had led to this moment.

Amy Butler Greenfield, Writer: She was somebody who had the ability to see beyond what most other people could. She could see things starting to unlock in front of her eyes.

Narration: She was one woman fighting a secret army. Her success or failure could determine the outcome of the war.

Jason Fagone, Author, The Woman Who Smashed Codes: Elizebeth Friedman was a code-breaking, Quaker poet who hunted Nazi spies and there's nobody like her then or since.

Narration: Elizebeth Smith Friedman's life was unexpectedly set on course during a visit to the bustling city of Chicago in 1916. Twenty-three and full of dreams, she was hoping to escape the life she had been raised to expect.

Jason Fagone, Author, The Woman Who Smashed Codes: Elizebeth came from a large Quaker family in small town Indiana and from a very young age she felt like she didn't fit in. She even hated her own name. She called it the odious name Smith. And she hated it because she believed that whenever she was introduced as Miss Smith she would be seen as something so ordinary and she didn't want to be ordinary, she wanted to be extraordinary. She wanted an adventurous life.

Narration: Her mother, Sopha, had delivered ten children, the first when she was only seventeen. Elizebeth, born in 1892, was the youngest.

Jason Fagone, Author, The Woman Who Smashed Codes: Elizebeth often felt pity for her because Sopha's life had been completely overtaken, it seemed to Elizebeth, by childbearing and child rearing. She didn't seem to be able to pursue any kind of life of the mind, and to Elizebeth that was horrifying because Elizebeth was a very bookish kid. She loved to read, she loved poetry. She wrote her own poetry.

Amy Butler Greenfield, Writer: Her father was a Civil War veteran. He saw his youngest as a difficult child and their relationship absolutely was difficult. Her father did not support her going to college. He was against further education, particularly for women. She manages to talk him into this and he says she can have the money, but at 6% interest. She has to pay it all back.

Narration: In college, Elizebeth studied Greek and English literature. When she discovered Shakespeare, she became fascinated by the intricacies of language... sparking a passion that would drive her ambitions.

After graduation, Elizebeth pursued one of the few careers available to women at the time and accepted a teaching job at a small Indiana school. She found the work uninspiring, and quit after just a year.

In June of 1916, she headed for Chicago in search of a new job. After a week of effort, she found nothing.

With no income and no job prospects, Elizebeth had no choice but to return home in defeat.

On her last day in the city, she indulged in a visit to the Newberry Library to see a rare treasure - Shakespeare's first folio, printed in 1623.

Jason Fagone, Author, The Woman Who Smashed Codes: She's looking at this book of Shakespeare. And the librarian notices and says, "You're interested in Shakespeare, aren't you?" And Elizebeth says, "Well, yes." And the librarian says, "You know, it's funny, there's an odd, wealthy man who keeps coming to the library... and he's looking for somebody to help him with this project to find some kind of secret that he thinks is hidden in this book.

Narration: An hour later, George Fabyan was standing at her table. At six-foot-four, 250-pounds, the wealthy industrialist towered over her.

Jason Fagone, Author, The Woman Who Smashed Codes: He walks right up to Elizebeth and the first thing he says to her is, "Would you like to come out to Riverbank and spend the night with me?" She has no idea what to say to this. It's the most indelicate question that anyone has ever posed to her.

Amy Butler Greenfield, Writer: And he grabs her under the elbow, lifts her up. She's tiny, he's huge. And he frog marches her out the door to a waiting limousine, which takes them to the railway station.

Narration: Soon, Elizebeth was wandering the grounds of Fabyan's vast Riverbank estate, nestled on 350-acres of rolling hills in Geneva, Illinois.

Strolling the Japanese Garden, she was filled with a mix of astonishment and curiosity about the tycoon's eccentric kingdom.

Jason Fagone, Author, The Woman Who Smashed Codes: George Fabyan had so much money that he could do essentially anything that he wanted. And what he wanted to do was to build a playground for science. He would go out and hire some of the leading scientists of the day, bring them to Riverbank, essentially collecting these scientists and he would set them loose and tell them to be spectacular. Tell them to make breakthroughs. Tell them to unlock the secrets of nature.

Narration: What captured most of Fabyan's attention, however, was a literary project focused on proving that the works of William Shakespeare had been written by another author -- the Elizabethan philosopher and scientist, Francis Bacon.

Vince Houghton, Historian: Fabyan had the belief that William Shakespeare didn't write Shakespeare. That actually Francis Bacon had written a code within the Shakespearean plays that demonstrated that Shakespeare was not the author, that Bacon actually was.

Narration: Fabyan assigned Elizebeth the job of ferreting out the secret message he believed Bacon had implanted in the text. Excited by the challenge, she first had to master a method of encoding messages invented by Francis Bacon in 1623.

In the Bacon system, each letter of the alphabet was assigned a combination of the letters A & B in groups of five.

Vince Houghton, Historian: Essentially what he did is he said, okay, I'm going to take every letter of the alphabet and break it down into a binary system of As and Bs. The letter A would turn into five As, A-A-A-A-A. The letter B was A-A-A-A-B. The letter C and so on. This can be represented any way you wanted to- as long as there are two different things you are using to represent the binary system.

Vince Houghton, Historian: And this is what the legend was, that the First Shakespeare Folio had this code written in two different typefaces throughout.

Narration: Once the differences in the typeface were identified, and the letters sorted into clusters of five, a hidden message would be revealed.

The work was tedious, but Elizebeth discovered she had the patience to stare at characters on a page for hours on end.

Jason Fagone, Author, The Woman Who Smashed Codes: What Elizebeth was required to do was peer through a magnifying glass and try to discern very subtle variations in the fonts on photographic enlargements of Shakespeare's plays. And that was how she was going to break the code and rewrite the history of English literature.

Narration: Her work with the Shakespeare manuscripts would bring her together with the young man who was photographing and enlarging the Shakespeare texts, William Friedman. Genetics was his field of expertise. Photography was his hobby.

At Riverbank, he easily stood out.

Rose Mary Sheldon, Historian: William always wore a white starched shirt, which in that heat I don't know how he didn't perspire to death but he always looked very together, very cool. His hair was always combed perfectly. This was a man who knew how to dress.

Jason Fagone, Author, The Woman Who Smashed Codes: There are a lot of photos of just Elizebeth and you can tell that William is gazing down at his camera into the glass and seeing an image of her and probably smiling. She was unlike anyone he had ever met... he was very quickly falling in love.

Narration: The couple were an unlikely match - she was a Quaker from the Midwest and he was a Jewish immigrant from Russia.

David Hatch, Senior Historian, NSA: Late in his life, one of William Friedman's colleagues asked him how he got into cryptology. According to the story, he had a sly smile on his face and he said, "I was seduced."

Narration: Working across from each other day by day, they began digging into Fabyan's collection of codebreaking books,1 exchanging insights and ideas.

Vince Houghton, Historian: And so Elizebeth was able to bring William into the fold and say, look, you can take your very mathematical, scientific approach to understanding codes and ciphers, I can bring my poetry and language skills and together we'll be unstoppable.

Narration: As they began to master rudimentary skills, however, they saw little indication of embedded codes in the Shakespeare manuscripts.

Rose Mary Sheldon, Historian: Every now and then there will be a letter that is slightly different. Now, it could be just because the way the typeface struck the paper. There might be a little tail off a letter or a letter might be a little wider. They're random marks and they can be made by any typesetter, especially back in the 16th century, and so they're really rather meaningless...

Jason Fagone, Author, The Woman Who Smashed Codes: Now they both agreed that the central project at Riverbank had no scientific validity. It was all a pipe dream, it was a kind of delusion...

Narration: Disheartened by their revelation, they saw no future in codebreaking. Still, they saw a future with each other.

In May of 1917, Elizebeth and William stole away from Riverbank to get married in Chicago.

Jason Fagone, Author, The Woman Who Smashed Codes: William's family was shocked and appalled by the marriage. They wanted to see him marry a Jewish woman. His brother later said that if William had been living in Pittsburgh at the time, in the close-knit Jewish community there, he would have been exiled.

Amy Butler Greenfield, Writer: The two of them go ahead and despite the differences in their background, despite the family opposition, despite the lack of money, despite all the many reasons why they should not get married, they do.

A month before they wed, the United States had entered the "Great War" in Europe-a war unlike anything that had come before-in part because of the invention of the radio.

Suddenly, the air was full of messages relaying information that could win or lose a battle, destroy a regiment, or sink a ship. All of it easily intercepted by anyone with an antenna.

Jason Fagone, Author, The Woman Who Smashed Codes: The invention of radio completely transformed the value of code breaking. So it put an incredible premium on cryptography, on strong codes and ciphers because now that those messages were flying through the air they had to be protected. The problem for America is that on the eve of World War I the United States was completely unprepared to break codes in the war.

Vince Houghton, Historian: The United States had no code breaking agency or bureau in the United States military. It just didn't exist. There was no NSA, there was no CIA, the military branches had their own very, very small intelligence agencies, we're talking about dozens of people not thousands in this case.

Narration: At Riverbank, George Fabyan saw an opportunity to serve his country - and to enhance his reputation. He established the first dedicated codebreaking unit in America2 and, much to their disbelief, placed Elizebeth and William in charge. Soon, the War, Navy, State, and Justice Departments were sending thousands of secret messages to Riverbank for decryption.3

Vince Houghton, Historian: So William and Elizebeth Friedman at this point hadn't really done this systematically for very long. They'd kind of played with it a little bit. But all of a sudden, they're being asked to break codes for the United States military in a world war. Talk about on the job training, this is as deep as on the job training gets.

Narration: The couple scrambled to expand their knowledge of codebreaking: starting with the most fundamental concepts like the difference between a cipher and a code.

Vince Houghton, Historian: A code is when you take a word or even a phrase and you replace it with another word or a phrase. So if we have the word "gun" we might say every place the word gun is, we're going to put "Bob" instead. That way you're able to replace the words, but if somebody intercepts your message, they may not actually know there's a secret message there, because it reads like plain text. A cipher, on the other hand, is taking individual letters (or groups of letters) and changing them through some process, through some algorithm, into other letters, into numbers, into symbols, into anything, so that you can mix up the message and make it unreadable.

Narration: Using a method that had been around for hundreds of years, they began decrypting messages using frequency analysis.

Jason Fagone: They figured out methods of solving secret messages that had never been imagined before... For the first eight months of World War I, this sounds incredible but it's completely true, Elizebeth, William and their colleagues at Riverbank broke all messages for every part of the US military and the Department of Justice.

Narration: They documented their breakthroughs in eight volumes- known as the Riverbank Publications, which established a mathematical foundation to the principles of cryptology.

David Hatch, Senior Historian, NSA: Prior to the publications at Riverbank from Elizebeth and William, cryptology had been thought of as a field for linguists, for people with knowledge about foreign cultural areas and perhaps math might be a tool. But the Riverbank Laboratories publications turned cryptology from language to statistics.

Narration: In an age when codebreaking was becoming a weapon of war, Elizebeth and William were forging a new science4 of immense power.

It was a heady time for Elizebeth. She was training the first generation of codebreakers for the US military.

The couple were so captivated by cryptology, for fun they embedded codes everywhere5... even the officer trainee class photo.

As the group gathered, they instructed everyone assembled how to pose.

Vince Houghton, Historian: And if you're just looking at the picture you're like, man, whoever decided to shoot this wasn't very disciplined. A good chunk of the people in the photograph are looking forward, but a good chunk are looking to the side.

Jason Fagone, Author, The Woman Who Smashed Codes: And it turns out that each person in the photo stands for a letter in Bacon's biliteral cipher. So the people who are looking off to the side are the B form of the cipher and the people who are looking straight ahead are the A form.

Jason Fagone, Author, The Woman Who Smashed Codes: And when you put it all together the people in Bacon's cipher spell out the phrase knowledge is power, which is one of Bacon's mottos and a motto that William and Elizebeth adopted as their own. And it's not written in letters but it's written in people.

Narration: The Friedmans' work at Riverbank was an eye-opener for the US military. Six months into the war, the Army established its own Cipher Bureau in Washington.

With the workload at Riverbank dwindling, William signed up for military duty as a field codebreaker in Europe.

Elizebeth wanted to do field work as well, but she could not; women were excluded from serving at the front.

Jason Fagone, Author, The Woman Who Smashed Codes: It was a terrifying time for her. She let it be known in letters to William that George Fabyan was not treating her well, that he was pressuring her. There's a reference in one of William's letters to the fact that Fabyan might have sexually harassed Elizebeth, might have propositioned her. William was very angry, he called Fabyan that nameless rascal in that letter and said he wanted to hurt him, to beat him up. And so when they were reunited they were highly motivated to get the hell out of there.

Narration: At war's end, William used his military contacts to line up a job in Washington.

He arrived in Washington with a reputation earned on the battlefield. Elizebeth arrived in Washington as William's wife.

Technological innovations were fueling a global race to create evermore advanced devices for making and breaking codes. The post-war world was still a dangerous place. In 1921, William went to work for the Army Signal Corps developing new cipher machines.

Elizebeth was also offered a job - but at half of William's salary. She took the position, but left after a year. She believed her codebreaking days were over.

Narration: In 1923, Elizebeth gave birth to a daughter. Soon followed by the birth of a son.

Codebreaking unexpectedly entered Elizebeth's life again in 1925 when a Coast Guard officer knocked on the door of her suburban home with an urgent request. He explained that the Coast Guard's network of radio towers had intercepted hundreds of encrypted messages but no one knew how to break them.

Decrypting the messages might help them gain the upper hand against a deadly adversary.

The Prohibition Act, signed into law several years earlier, had triggered an explosion of illegal trafficking in alcohol. Mobsters and gangsters ruled the streets.

Barbara Osteika: Murder was rampant and it became not just murder of gangster on gangster but they were starting to murder anybody who opposed them. The federal police didn't even really understand the concept of organized crime.

Jason Fagone: A massive black market rises up and it's controlled by gangsters, racketeers, and mafiosi. And very quickly they make a mockery out of the Coast Guard.

Narration: The Coast Guard was charged with stopping the deluge of liquor coming in by sea, but it only had 200 boats to patrol 5,000 miles of coastline. The rum runners, on the other hand, had unlimited resources. Huge ocean-going vessels served as mother ships that stored millions of dollars' worth of liquor in their holds. A fleet of smaller crafts, called black ships, would divvy up the cargo and transport it back to shore. Logistics made possible by the use of shortwave radios and sophisticated codes.

The Coast Guard officer pleaded with Elizebeth for help. She was no teetotaler. But Elizebeth saw the damage organized crime was doing to the country.

During her first three months on the job, she single-handedly decrypted two years' worth of backlogged messages.

Amy Butler Greenfield, Writer: It's basically Elizebeth and a secretary filing her decrypts, and she's doing all of that work during those years. She says she ends up looking at about 25,000 intercepts a year. That's just astonishing. It's really a war.

Narration: Elizebeth, however, was not just decrypting the messages... she was weaponizing the data she was gathering.

Barbara Osteika, Federal Law Enforcement Historian: What Elizebeth does is she begins the development of strategic intelligence, which nobody has done to this point. And what that means is she takes the information that she's obtaining in these broken codes and ciphers, which are basically the plans and intentions of the gangsters... And she begins to figure out who owns the ships, where a ship is scheduled to leave from, where those ships are going, who's meeting those ships. All of these arrangements were made with wireless radio.

Barbara Osteika, Federal Law Enforcement Historian: She was able to explain basically to the US government and all of its federal law enforcement agencies what organized crime looked like, how they were doing their job and how to stop them. And that is really visionary...

Narration: For a mother with young children, a home to run, and a husband who worked equally long hours -- it was an exhausting time.

A decade into Prohibition, the crime syndicates had grown into multinational businesses run with exacting efficiency. But with Elizebeth's intelligence in tow, the US government could finally take the mobsters to court.

Elizebeth became the key witness in a series of sensational trials - starting with the prosecution of -CONEXCO-the largest rum running enterprise in the world.

Barbara Osteika: They had the network from the manufacturer of the liquor to the final distribution of that liquor to speakeasies and nightclubs. When the government went after CONEXCO it would be like the government going after Walmart today.

Narration: With a virtual monopoly on bootlegging in the Pacific and the Gulf of Mexico, CONEXCO supplied liquor to the most notorious mobster in the country, Al Capone.

Within a year, the US Government indicted CONEXCO's top rank,6 which included Capone's brother.

In 1933 at the trial in New Orleans, prosecutors called upon Elizebeth to testify against some of the most dangerous men in the country.

Barbara Osteika, Federal Law Enforcement Historian: There were a lot of prohibition agents who had already been killed in the line of duty.

Rose Mary Sheldon, Historian: There are these plain clothes people she doesn't know - that are there to keep her from being whacked by the bad guys. But it wouldn't have occurred to her not to testify against them. These people had to be put away, that was the whole point of breaking the codes.

Narration: When Elizebeth took the stand, she was grilled mercilessly by Al Capone's attorney who worked to undermine her credibility.

Jason Fagone, Author, The Woman Who Smashed Codes: And whenever Elizebeth tried to explain how she solved the messages these six lawyers, men, would often stand up and object and say that it was some kind of witchcraft, that code breaking was not science, that Elizebeth was just making a guess.

Jason Fagone, Author, The Woman Who Smashed Codes: She got so fed up with the repeated objections of the defense attorneys that she asked a judge if she could have access to a blackboard. And Elizebeth proceeded to give a class in code breaking. And by the time she was finished the defense attorneys had nothing else to say.

Barbara Osteika, Federal Law Enforcement Historian: They must have been thinking they were going to be able to bowl her over and make her testimony irrelevant. And instead she takes control of that and, you know, seals the deal. She gets the conviction...

Narration: Elizebeth became a national celebrity. One newspaper headline praised her "Class in Cryptology." Another described her as, "a pretty woman who protects the United States." Reporters covering the trial expressed surprise that one woman could take down some of the most dangerous gangsters in the country.

Vince Houghton, Historian: This is juicy stuff, these are murderers and these are people who will become household names in America. And then along comes this woman who is the key witness at the trial to get these guys thrown in prison. They don't talk about her skills, they don't talk about her brains and her ability to break these codes and to bring these gangsters to justice. They talk about how she looks, how she's dressed, that she's this dainty, little woman who is bringing these big, Al Capone-type mobsters to justice.

Narration: William was delighted that his wife was finally getting the recognition she deserved. "I'm as proud as I can be," he told her.

Narration: As Elizebeth's work was seeing the light of day, William's was burrowing deeper into the shadows.

By the late fall of 1939, Elizebeth knew something was terribly wrong with her husband.

Jason Fagone, Author, The Woman Who Smashed Codes: He developed mood swings, that's what Elizebeth called them, mood swings or down swings. Elizebeth was trying to figure out what was going on. She assumed that he was working on a very difficult project at work. She didn't know what it was. He didn't tell her and he couldn't tell her.

Narration: William's work at the Army intelligence was classified top-secret. He was breaking into the encryption machines of America's enemies.

The machines had reached a new level of complexity. Many were considered unbreakable.

With the start of the second world war in Europe, William's work reached a new level of urgency.

Amy Butler Greenfield, Writer: There's Blitzkrieg, you see Paris fall, you see that Britain is left standing almost alone. You see that the Japanese are starting to make overtures to be joined in alliance with Germany and with Italy. It's looking very bad and William in addition as a Jewish man is aware that terrible things are happening to Jewish people in Germany. So I think the weight was colossal.

Narration: William was trying to pry open a Japanese machine called Purple - a device he had never seen or even had diagrams for.

Jason Fagone, Author, The Woman Who Smashed Codes: William and his team at the Army worked around the clock to try to reverse engineer these Japanese cipher machines because if they could then they would essentially be able to read the minds of the Axis powers- Japan and Nazi Germany.

Vince Houghton, Historian: William had to keep all that inside. He had a small group of people he worked with that he could talk to, but they all worked for him. And because he internalized all this stuff, it just burned him up inside until he finally broke.

Narration: William's team finally cracked Purple in September of 1940. Three months later, he had a complete breakdown - and checked himself into the psychiatric unit of Walter Reed General Hospital.

Elizebeth watched in dismay as he sank deeper and deeper into a depression.

Jason Fagone, Author, The Woman Who Smashed Codes: William at that point was still the main breadwinner in the household. He made much more money than Elizebeth did. And so the fact of him being in the psych ward, the uncertainty about his future created a much bigger uncertainty about both of their lives.

Narration: Every day for the nearly three months he was hospitalized, Elizebeth made the exhausting trip to see her husband.

Amy Butler Greenfield, Writer: She is absolutely essential to William's recovery. The medical establishment just let them sort it out themselves. And William says later that she was the person who sent down the rope to the terrible morass that he was in. She pulled him out of the swamp. She did it by willpower, she did it by faith in him.

Narration: After he was discharged, he returned to his job at the Army. But he would struggle with clinical depression for the rest of his life.

Jason Fagone, Author, The Woman Who Smashed Codes: Elizebeth and William had always been equals, a team. After William's breakdown in 1941 he would never quite be the same. And so Elizebeth would have to step up. From now on she would in many ways have to be the stronger of the two.

Narration: In December 1941 - after a surprise Japanese attack at Pearl Harbor,8 the US military immediately ramped up its codebreaking capabilities.9

Elizebeth's team had just shifted from the Coast Guard to the Navy. Now a military operation, the Navy placed a uniformed officer with much less experience in charge of the unit.

Rose Mary Sheldon, Historian: The Navy had a rule that women couldn't be in charge of men and so she had to take a secondary position to a man who wasn't as good as she was.

Jason Fagone, Author, The Woman Who Smashed Codes: She had to deal with the pain and the frustration of losing leadership of something that she had created, that she had built and that was really her baby.

Narration: The unit's assignment was to monitor communications between a Nazi spy ring in South America and the German high command.

Amy Butler Greenfield, Writer: There had been a high amount of German emigration to South America in the early 20th century. There were places that had German towns with German street names, German newspapers, German schools. In addition, you had homegrown fascist movements. You had movements in Brazil, in Paraguay, and other countries where you see real similarities with what is going on with Hitler's Germany and what's happening in Mussolini's Italy.

Narration: Decoding messages written in German wasn't a problem for Elizebeth. She was now so skilled at recognizing the various statistical properties of foreign languages, a translator could do the rest.10 In her rum runner days she had even decrypted messages in Chinese.

Among the decrypted messages, one name appeared over and over: Sargo

Amy Butler Greenfield, Writer: She doesn't know it yet but she's starting to suspect she's onto something big, and she is. Sargo is the code name for a man named Johannes Siegfried Becker. And Becker is the SS's main man in South America. He is part of Hitler's elite.

Narration: As Elizebeth began to decode Sargo's messages, she made a startling revelation - his network was transmitting the locations of Allied ships to U-boats in the Atlantic.

March 8
Queen Mary departed on March 8 1800 local time

March 12
The Queen Mary on the 11th at 1800 MEZ was reported by the ship Campeiro
on the seas (near) Recife.

March 13
The Queen Mary on the 12th at 1500MEZ was reported near the coast of Ceara

Narration: With her record-breaking speed12 and size,13 the Queen Mary's military value was so great -- Adolph Hitler was offering $250,000 to the U-boat captain who could bring her down.

On this trip more than 8,000 men stood to lose their lives if the ship was sunk.

Guided by the secret messages, the U-boats found the Queen Mary off the coast of Brazil.

But before they could strike, Elizebeth's decrypts were relayed to the ship's captain. He was able to take evasive maneuvers and bring the ship safely to port.

As soon as Elizebeth started unlocking Sargo's messages, the balance in the Atlantic began to tip.

David Hatch, Senior Historian, NSA: The information could be given to American forces first for a ship to take evasive action, and also for the hunter killer teams that the Americans had in the South Atlantic. And many U-boats were sunk based on this kind of information. ...

Vince Houghton, Historian: The work that Elizebeth Friedman is doing is some of the most important work of the second World War. It is allowing the supply line to exist.

Narration: Then, without warning, the Brazilian police started rounding up the Nazi spies. Within days, the airwaves went silent.

Vince Houghton, Historian: Hoover wants the glory, Hoover wants the headlines. That was really stupid of him to do. This is really life and death. Hoover is now completely cutting us off from this life saving intelligence that's allowing us to keep our convoys safe in the Atlantic Ocean. This puts Elizebeth and her team back at square one.

There were several models of the enigma. The British were using a newly-invented decoding device to crack into the version used by the German military. The machine Elizebeth was facing was slightly less intricate - but not by much. Her tools were still only pencil and paper.

Day after day she waded through the messages.

After two months,she spotted a chink in the Enigma's armor. She intercepted a cache of 28 messages all sent in the same key - a careless mistake made by the spies.

The breakthrough enabled her to make inroads into the machine's system. She lined up the messages one below the other in a technique called solving "in depth."

Vince Houghton, Historian: When you solve in depth and you put your papers next to each other or one on top of the other and you're looking at what is the first letter in each of these messages, what is the second letter in each of these messages... Once you have the knowledge that you're dealing with the same key everyday, then you can actually start breaking down words and understanding what letters are turning into others...

Amy Butler Greenfield, Writer: I think that Elizebeth would be the first to say that you are always looking for the mistake that the other side is making. You find a little doorway that's been left open just a smidge and that's where you attack and that's where you go in.

Narration: Finally, she was able to follow Sargo's activities again.

The decrypted messages laid bare ominous new developments in South America.

Amy Butler Greenfield, Writer: There is a coup in Argentina, a fascist coup, in the summer of 1943. At the end of that Sargo is really on the inside... In Bolivia, again, he is working with people who want to turn the government toward the Nazis, and in December of 1943, lo and behold there's a fascist coup in Bolivia. And this is scary stuff for the United States.

Sargo went into hiding. He would never rebuild his network again.

Elizabeth's work in South America was an astonishing testament to the power of codebreaking.20 But it would be a private and lonely victory. She had signed a Navy oath promising her silence until death. She could tell no one. Not even William.

And she could do nothing as J. Edgar Hoover took credit for her crowning achievement.

He took all the decrypts she had sent him - all 4,000 of them -- and had them stamped with FBI identification numbers, erasing Elizebeth and her team from the official record.

Jason Fagone, Author, The Woman Who Smashed Codes: Elizebeth just had to kind of grin and bear it, and after a while she wasn't grinning so much anymore. It kind of ate at her, but there was very little that she could do.

Codebreaking by pencil and paper had become a thing of the past. Computers were the future.22

Amy Butler Greenfield, Writer: The post-war era will be like nothing Elizebeth has ever seen, and she knows that. She knows it's changing. She can see that her era is ending.

Narration: William continued to work for the government. In the early 1950s he suffered a series of heart attacks and continued to struggle with mental illness.

Jason Fagone, Author, The Woman Who Smashed Codes: He was so depressed that he was unable to even start his hand to move on a pad of paper at the office, and so Elizebeth would put her hand on top of his and move the pencil for him. And in that way he was able to begin to work, begin to draw, begin to think and come to life... To me, that says everything about the Friedmans, who they were, their bond.

Narration: William died of a heart attack on November 2, 1969.

Though Elizebeth's career as a codebreaker was long over, codebreaking itself was becoming a critical part of keeping the nation safe.

The US government had created the National Security Agency - the NSA - in 1952, and charged it with collecting cryptographic communications and strengthening the nation's codes. It would become the largest, most secretive and far-reaching arm of US intelligence gathering.

Vince Houghton, Historian: Even though we're not fighting a shooting war, we are keeping secrets, and a lot of them, and not letting the American public know what the government is doing in its name. Elizebeth felt that it was going too far,too far, collecting too much information, becoming too intrusive, violating too much privacy. Some of the same themes that will basically pester the NSA for the next several decades.

Narration: Even as intelligence gathering grew into something Elizebeth would hardly recognize, her methods formed the basis of codebreaking for decades to come.

Jason Fagone, Author, The Woman Who Smashed Codes: She helped to create an immensely powerful new science of code breaking... And so there's still a good portion of her DNA in codebreaking today, even though it's been mathematized and done on computers. She laid a foundation for what happens at American intelligence agencies everyday today.

Narration: Elizebeth struggled in her final years as her savings dried up. She died on October 31, 1980 in a nursing home in New Jersey. She took her secret life to the grave.

The government kept the files detailing Elizebeth Friedman's history making work locked away for 62 years. In 2008, decades after her death, they were finally declassified.

Amy Butler Greenfield, Writer: If we could miss something as big as Elizebeth, who is crucial in two world wars, who fights crime, who fights the mob, if we missed her, who else are we missing?

# data[].attributes.attachment_link.title
The Codebreaker | American Experience | PBS

# data[].attributes.attachment_link.description
Discover the fascinating story of Elizebeth Smith Friedman, the groundbreaking cryptanalyst who helped bring down gangsters and break up a Nazi spy ring in South America. Her work helped lay the foundation for modern codebreaking today.

# data[].attributes.attachment_link.title
Crochet Slip Knot - Beginner Course: Lesson #4

# data[].attributes.attachment_link.provider_name
skribbl - Free Multiplayer Drawing & Guessing Game

# data[].attributes.attachment_link.title
skribbl - Free Multiplayer Drawing & Guessing Game

# data[].attributes.attachment_link.description
skribbl io is a free multiplayer drawing and guessing game. Draw and guess words with your friends and people all around the world! Score the most points and be the winner!

# data[].attributes.attachment_link.description
Share your videos with friends, family, and the world

# data[].attributes.attachment_link.provider_name
Adafruit Circuit Playground Express - Blocks / Javascript editor

# data[].attributes.attachment_link.authors[].name
Adafruit Circuit Playground Express - Blocks / Javascript editor

# data[].attributes.attachment_link.title
Adafruit Circuit Playground Express - Blocks / Javascript editor

# data[].attributes.attachment_link.description
A Blocks / JavaScript code editor for the Adafruit Circuit Playground Express.

# data[].attributes.body
Random design challenge generator.

# data[].attributes.attachment_link.title
Sharpen for STEM — STEM Challenge Generator

# data[].attributes.attachment_link.description
Over 190,000 STEM lesson prompts to supercharge your classroom.

# data[].attributes.attachment_link.description
Piskel, free online sprite editor. A simple web-based tool for Spriting and Pixel art. Create pixel art, game sprites and animated GIFs. Free and open-source.

# data[].attributes.attachment_link.readable_text
Hour of Code

This year, we're taking Hour of Code to new heights by offering coding opportunities that encompass both artificial intelligence (AI) and non-AI components.

Want to keep learning? Go beyond an hour

Teachers: Host an hour or read the How-To Guide

# data[].attributes.attachment_link.description
Use computer science to explore and learn about AI!

# data[].attributes.attachment_link.title
Noteflight - Online Music Notation Software

# data[].attributes.attachment_link.description
Noteflight is an online music writing application that lets you create, view, print and hear professional quality music notation right in your web browser.

# data[].attributes.attachment_link.readable_text
WordArt.com is an AI-powered word cloud generator that enables you to create amazing and unique word clouds with ease.

Professional quality results can be achieved in no time at all, even for users with no prior knowledge of graphic design.

Word clouds (also known as tag cloud, word collage or wordle) are visual representation of text that give greater rank to words that appear more frequently.

Word clouds are perfect for creating stunning personalized gifts. No sign up required!

# data[].attributes.attachment_link.title
Create Stunning Word Clouds in Seconds | WordArt.com

# data[].attributes.attachment_link.description
WordArt.com is an online word cloud generator that enables you to create amazing and unique word clouds with ease

# data[].attributes.attachment_link.description
The highest quality free courses through the most awesome learning platform.

# data[].attributes.attachment_link.readable_text
Take cybersecurity into your own hands. In this Lab, you'll defend a company that is the target of increasingly sophisticated cyber attacks. Your task is to strengthen your cyber defenses and thwart the attackers by completing a series of cybersecurity challenges. You'll crack passwords, craft code, and defeat malicious hackers.

Video Intro About this Lab Educator Guide

# data[].attributes.attachment_link.description
Take cybersecurity into your own hands by thwarting a series of cyber attacks.

# data[].attributes.attachment_link.title
How to Slip Knot and Chain - Crochet Lesson 1

# data[].attributes.attachment_link.readable_text
Aw snap! Google Earth isn't supported on your browser. You may need to update your browser or use a different browser. Please see our system requirements for more information. Chrome is a great choice and you can download it here.

Or if you're feeling adventurous, you can try Earth anyway by choosing an option below.

Learn more about Google Earth.

# data[].attributes.attachment_link.description
Aw snap! Google Earth isn't supported on your browser. You may need to update your browser or use a different browser. Please see our system requirements for more information. Chrome is a great choice and you can download it here. Or if you're feeling adventurous, you can try Earth anyway by choosing an option below.

# data[].attributes.attachment_link.title
Color Stereo Hidden Image Stereogram Gallery

# data[].attributes.attachment_link.description
Hidden Image Stereograms are defined by being virtually impossible to see as 2D, with objects being magically exposed in 3D only when viewed correctly. This is the type image most commonly associated with stereograms. It is difficult to show anything with fine detail or long words, so it is necessary to keep objects simple and text short.

# data[].attributes.attachment_link.readable_text
This is a project based course on Making with the Adafruit Circuit Playground Express. This course introduces the Making process and has guided maker projects which combine creative activities with coding.

[{ "name": "Introduction", "description": "Introduction and overview topics.", "imageUrl": "https://pxt.azureedge.net/blob/719f3da0c27966ee5cd79a93021521b0ed76a68e/static/courses/maker/intro.png", "url":"/courses/maker/intro" }, { "name": "General Reference", "description": "General reference topics on making and coding.", "imageUrl": "https://pxt.azureedge.net/blob/ba10e53c8c2f755b2c970b573b001e76a7ea7d8f/static/courses/maker/general.png", "url":"/courses/maker/general" }, { "name": "Projects", "description": "Guided maker projects which combine a creative activity with coding.", "imageUrl": "https://pxt.azureedge.net/blob/db5f2420e6870d8453004cc03b4a6264ca6e5896/static/courses/maker/projects.png", "url":"/courses/maker/projects" }]

See Also

Introduction, General Reference, Projects

# data[].attributes.attachment_link.title
Maker Course for the Adafruit Circuit Playground Express

# data[].attributes.attachment_link.description
This is a project based course on Making with the Adafruit Circuit Playground Express. This course introduces the Making process and has guided maker projects which combine creative activities with coding.

# data[].attributes.attachment_link.title
Briefz.Biz: A design brief generator & learning community

# data[].attributes.attachment_link.description
Briefz.biz spits out creative prompts to get you inspired and help build your portfolio. 100% free. Check out our articles, guides, and resources on for designers of all skill levels. Join our new Discord server and access a community of designers around the globe.

# data[].attributes.attachment_link.description
Mecabricks is the first web service to publish and display 3D models made with LEGO® bricks. No need to install any plugin, it simply works.

# data[].attributes.attachment_link.description
Pixilart, free online pixel drawing tool - This drawing tool allows you to make pixel art, game sprites and animated GIFs online for free.

# data[].attributes.attachment_link.description
Scratch is a free programming language and online community where you can create your own interactive stories, games, and animations.

# data[].attributes.attachment_link.readable_text
BeepBox is an online tool for sketching and sharing instrumental music.

All song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!

BeepBox is a passion project, and will always be free to use. If you find it valuable and have the means, any gratuity via would be appreciated!

Instructions

You can add or remove notes by clicking on the gray rows at the top. BeepBox automatically plays the notes out loud for you. Try it!

Notes go into patterns, and you can edit one pattern at a time. Those numbered boxes at the bottom of the editor are the different patterns you can edit. Click the boxes to move to a different part of the song, or click the arrows on the currently selected box to swap which pattern is played during that part of the song.

BeepBox can play several rows of patterns simultaneously, and each row has its own set of patterns. Most rows can play melodies or harmonies, but the bottom row is for drums.

The purple loop underneath the numbered boxes controls which part of the song is currently repeating. Move the loop to listen to a different part of the song, or drag the ends to expand the loop to include the whole song.

When BeepBox has focus (click on its interface above), you can use these keyboard shortcuts:

Spacebar: play or pause the song

Shift Spacebar: play from mouse location

C/V: copy/paste selected pattern(s)

0-9: assign pattern number to selection

Arrows: move selection

Ctrl + Arrows: rearrange channels

[ ]: move playhead backward or forward

F/H: move to First or Highlighted pattern

Shift & Drag: select part of a pattern

Check BeepBox's edit menu for more!

In the note pattern editor, you can click and drag horizontally on a note to adjust its duration. You can also click above or below an existing note to add more notes to be played simultaneously, which is called a chord.

ADVANCED: Drag vertically from an existing note to bend its pitch, or drag vertically from above or below the note to adjust its volume. Drag on the numbered pattern boxes to select multiple patterns to copy and paste parts of your song.

BeepBox has many more features. Try playing with the buttons and menus on the right side to find out what it can do! You can also click on the label next to each option for a description of what it does.

Want to see what people have made with BeepBox? Songs that were shared on Twitter prior to 2023-05-22 can now be browsed in this interactive archive!

About

BeepBox is developed by John Nesky.

BeepBox does not claim ownership over songs created with it, so original songs belong to their authors.

Neither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data.

You can find the release notes for the latest versions of BeepBox here. Those who yearn for simpler times can still use the 2.3 or 3.0.13 versions of BeepBox.

You can download an offline version of BeepBox to use when you don't have access to the internet. The features are otherwise the same.

You can download and use the source code under the MIT license. In particular, you can use the synth code as demonstrated here to play BeepBox songs in your own JavaScript projects!

# data[].attributes.attachment_link.description
BeepBox is an online tool for sketching and sharing instrumental music.

# data[].attributes.attachment_link.readable_text
Typing Jets is a multiplayer typing game that allows students from anywhere in the world to race against each other while practicing typing and keyboard skills!

Save to an account!

Today's Top Players

# data[].attributes.attachment_link.title
The Good News Network: Positive Stories 24/7

# data[].attributes.attachment_link.description
Your daily source for only good news: Inspiring stories and images from around the world will make you feel uplifted, optimistic and positive about life.

# data[].attributes.attachment_link.readable_text
Here are a selection of interactive resources and games
that aim to introduce you to different aspects of Cyber Security.

Cyber Land

Complete a series of cyber security related tasks in this Cyber Land.

Data Leak

Test out your skills as a cyber investigator.

Rock Defenders

Play Rock Defenders and work your way through eight starter challenges, finishing up with one final challenge to put your cyber security knowledge to the test.

Top Trumps

Learn about different roles that the cyber security industry has to offer

Network Topologies

Learn about various network topologies, their advantages and disadvantages

# data[].attributes.attachment_link.description
Here are a selection of interactive resources and gamesthat aim to introduce you to different aspects of Cyber Security. Cyber Land Complete a series of cyber security related tasks in this Cyber Land. Codestrike - Bletchley Park Solve a series of challenges based around codebreaking, set in the historic Bletchley Park.

# data[].attributes.attachment_link.title
20 MAGIC TRICKS THAT WILL BLOW YOUR FRIENDS' MIND

# data[].attributes.attachment_link.description
Interland is an adventure-packed online game that puts the key lessons of digital citizenship and safety into hands-on practice. Play your way to being Internet Awesome.

# data[].attributes.attachment_link.description
A collection of fun stuff, and other miscellaneous items.

# data[].attributes.body
https://education.makeblock.com/resource/explore-mbot-tutorials-collection/

# data[].attributes.attachment_link.readable_text
Stay up to date:

Just 15 Minutes a day gives you:

Better design thinking

Faster design decisions

More dates with attractive people

Mastery of the whiteboard

Dynamite interview skills

Happiness and success in all your endeavors

Works best with a friend and a whiteboard, but you can designercize on a screen too. Keep challenges short enough to complete over your lunch break. Do one every day for best results.

Here's an instruction manual (v: @teachang + @_echoi_), based on the original instruction manual (v: @mollyinglish).

Origin story

Designercize is a digital version of an analog whiteboard exercise originally created by Kate Rutter and Laura Klein to help designers improve whiteboarding, interviewing, and design thinking skills. It's been honed over thousands of practice sessions with Tradecraft designers.

Colophon

The designercize app was created by Tradecraft design instructors Zac & Jake, because we <3 you. Bespoke fonts, handcrafted by Jake, are obtainable here.

"Uh, no. Bad. Bad design."

Special thanks

Inspired by TypeCooker. Engineering support by Patrick Burd, writing + comedic support by Megan Kard, and early explorations by Jonathan Kuei. And a special thanks to all the guinea pig beta testers in the Tradecraft design community.

A thing by:

# data[].attributes.attachment_link.description
Retro prompt generator for whiteboard design practice.

# data[].attributes.attachment_link.readable_text
Computer science opens up possibilities for every student
Educators give their students confidence in computer science (CS), advance their computational thinking skills, and prepare them for the future.
We're invested in making education more equitable for students in all communities. Our products and programs aim to address disparities in CS education, especially for students from historically underrepresented communities, and to help equip teachers with computer science resources to prepare their students for their futures.

Google has committed over $240 million to closing computer science education equity gaps.

We work alongside communities to close CS education equity gaps, supporting innovative organizations like Scratch, The Hidden Genius Project and CodePath to help all students learn computer science and digital skills, working toward tech-based careers.
See Programs Mildred Johnson
As a fifth-grade science and social studies teacher at North Salisbury Elementary School in Salisbury, Maryland, Mildred uses Google's free computer science curriculum, CS First, to empower her students to create and share engaging class projects.

An intuitive, visual way to code

Since 2012, Google has freely offered Blockly, a developer library that powers the largest introduction-to-CS products worldwide. Blockly adds a visual code editor to web and mobile apps and uses interlocking, graphical blocks to represent code concepts like variables, logical expressions, loops, and more. Code.org, Scratch, Microsoft MakeCode and other developers use Blockly to teach computer science to 40M+ students every year.

An intuitive, visual way to code

Since 2012, Google has freely offered Blockly, a developer library that powers the largest introduction-to-CS products worldwide. Blockly adds a visual code editor to web and mobile apps and uses interlocking, graphical blocks to represent code concepts like variables, logical expressions, loops, and more. Code.org, Scratch, Microsoft MakeCode and other developers use Blockly to teach computer science to 40M+ students every year.

Computer Science Products and Programs

From history to literature to current events, help students build practical computer science skills as they learn and create. Also, introduce them to new experiences and opportunities to advance their skills.

Making digital skills training accessible to communities across the U.S.
The job market is changing, and employers are looking for skills that many students aren't yet confident in.
By 2030, 9 out of 10 jobs will require digital skills. We believe that every student in every school deserves to have access to the tools and skills that will set them up for success in the job market of today--and tomorrow. We're making digital skills resources accessible to more teachers, so students can develop job-ready skills to jump-start careers in fast-growing fields.

Over 120 hours of project-based digital skills lessons

We believe that every student in every school deserves to have access to the tools and skills that will set them up for success in the job market of today - and tomorrow.

Applied Digital Skills is a free, video-based, and online curriculum that prepares students of all ages for the growing number of jobs that require basic digital skills. From collaborating in a group to develop a creative presentation, to budgeting for a household or office using spreadsheets, the skills students gain have a wide range of applications, and the modular lessons can fit into any kind of classroom from a technology class to an English or History class. Teacher resources like customizable lesson plans and rubrics are included.

Over 120 hours of project-based digital skills lessons

We believe that every student in every school deserves to have access to the tools and skills that will set them up for success in the job market of today - and tomorrow.

Applied Digital Skills is a free, video-based, and online curriculum that prepares students of all ages for the growing number of jobs that require basic digital skills. From collaborating in a group to develop a creative presentation, to budgeting for a household or office using spreadsheets, the skills students gain have a wide range of applications, and the modular lessons can fit into any kind of classroom from a technology class to an English or History class. Teacher resources like customizable lesson plans and rubrics are included.

About Google Career Certificates

Google Career Certificates are available in the fields of cybersecurity, data analytics, digital marketing & e-commerce, IT support, project management, and user experience (UX) design and get learners job ready within a semester.

Designed by Google

The certificates are developed and taught by Google employees with decades of experience in these fields.

Top employers provide input to the curriculum to ensure we are teaching the skills they are hiring for.

ACE®️ recommended

Data analytics, IT support, project management and UX design certificates have credit recommendations from the American Council on Education (ACE®️) ¹ of up to 15 college credits. ²

A path to in-demand jobs

Practice-based training on the latest industry products and tools prepare learners for a job at any company.

Google Career Certificate graduates will also receive resume and job interview resources and can connect with top employers who are interested in hiring them.

Focused on economic mobility

We're proud that 75% of certificate graduates report a positive career outcome (e.g., new job, promotion, or raise) within six months of completion, and that 55% identify as Asian, Black, or Latino. ³

Designed by Google

The certificates are developed and taught by Google employees with decades of experience in these fields.

Top employers provide input to the curriculum to ensure we are teaching the skills they are hiring for.

ACE®️ recommended

Data analytics, IT support, project management and UX design certificates have credit recommendations from the American Council on Education (ACE®️) ¹ of up to 15 college credits. ²

A path to in-demand jobs

Practice-based training on the latest industry products and tools prepare learners for a job at any company.

Google Career Certificate graduates will also receive resume and job interview resources and can connect with top employers who are interested in hiring them.

Focused on economic mobility

We're proud that 75% of certificate graduates report a positive career outcome (e.g., new job, promotion, or raise) within six months of completion, and that 55% identify as Asian, Black, or Latino. ³

# data[].attributes.attachment_link.title
Computer Science & Digital Skills for Educators - Grow with Google

# data[].attributes.attachment_link.description
Help students explore, advance, and succeed in computer science and digital skills with Grow with Google resources for teachers and educators.

# data[].attributes.attachment_link.readable_text
America Works

Features the voices of contemporary workers from throughout the United States talking about their lives, their workplaces, and their on-the-job experiences. Drawn from hundreds of longer oral history interviews collected by fieldworkers for the American Folklife Center's Occupational Folklife Project (OFP), America Works is a testament to the wisdom, wit, knowledge, and dedication of today's working Americans. These engaging oral histories, which have are preserved in the American Folklife Center's archive, are enriching and expanding America's historical record.

# data[].attributes.attachment_link.description
Get the latest podcasts from the Library of Congress.

# data[].attributes.attachment_link.title
DIY: Among Us Crewmate Felt Keychain | Felt Crafts.

# data[].attributes.attachment_link.readable_text
Here are a selection of interactive resources and games
that aim to introduce you to different aspects of Cyber Security.

Cyber Land

Complete a series of cyber security related tasks in this Cyber Land.

Data Leak

Test out your skills as a cyber investigator.

Rock Defenders

Play Rock Defenders and work your way through eight starter challenges, finishing up with one final challenge to put your cyber security knowledge to the test.

Top Trumps

Learn about different roles that the cyber security industry has to offer

Network Topologies

Learn about various network topologies, their advantages and disadvantages

# data[].attributes.attachment_link.description
Here are a selection of interactive resources and gamesthat aim to introduce you to different aspects of Cyber Security. Cyber Land Complete a series of cyber security related tasks in this Cyber Land. Codestrike - Bletchley Park Solve a series of challenges based around codebreaking, set in the historic Bletchley Park.

# data[].attributes.attachment_link.readable_text
Japanese-type Puzzles
See all of the Japanese-type puzzles, such as Sudoku, Skyscrapers, Nonogrids, etc (lower down this page).

View All Puzzles
View all of the 800+ brain teasers, riddles, and other classic puzzles.

# data[].attributes.attachment_link.description
Brain teasers, mazes, and Japanese-type puzzles.

# data[].attributes.attachment_link.readable_text
Next, it's time to build the cyber:bot chassis. In addition to your micro:bit on a cyber:bot board, you will need the parts in the pictures below. If anything is missing, contact sales@parallax.com (888-512-1024). Set aside the bag of electronic components for now.

When you are done, you may have some pieces left over. That's okay!

# data[].attributes.attachment_link.description
Next, it's time to build the cyber:bot chassis. In addition to your micro:bit on a cyber:bot board, you will need the parts in the pictures below. If anything is missing, contact sales@parallax.com (888-512-1024). Set aside the bag of electronic components for now. When you are done, you may have some pieces left over.

# data[].attributes.attachment_link.readable_text
Aw snap! Google Earth isn't supported on your browser. You may need to update your browser or use a different browser. Please see our system requirements for more information. Chrome is a great choice and you can download it here.

Or if you're feeling adventurous, you can try Earth anyway by choosing an option below.

Learn more about Google Earth.

# data[].attributes.attachment_link.description
Aw snap! Google Earth isn't supported on your browser. You may need to update your browser or use a different browser. Please see our system requirements for more information. Chrome is a great choice and you can download it here. Or if you're feeling adventurous, you can try Earth anyway by choosing an option below.

# data[].attributes.attachment_link.description
Powerful, free online apps and community for creating beautiful custom content.

# data[].attributes.attachment_link.description
Find 'Game Design' lessons to do with your students. These 'Game Design' activities emphasize creativity while students practice computer science.

# data[].attributes.attachment_link.provider_name
Create Your Own Comic Strips Online with MakeBeliefsComix

# data[].attributes.attachment_link.readable_text
We Offer Support and Resources.

From Richard Byrne, editor of Practical Ed Tech Tip of the Week -- ''Creating Comics for Comfort'' -- Living in Maine and father of two school-age children, Richard wrote the following item for teachers and students dealing with the terrible tragedy of the recent mass shootings in that state. He thought this an appropriate time to review and use Social and Emotional Learning resources, such as those offered by MakeBeliefsComix.com.

Make Beliefs Comix offers a library of fantastic, free ebooks for SEL. The library hosted by Make Beliefs Comix contains fillable PDFs that you can download for free. The latest addition to that library is 50+ Ways to Talk to Yourself and Find Healing. And for something a bit lighter, take a look at Pet Words: Conversations With Your Animal Friends.

"Here's a video overview of the Make Beliefs Comix ebooks and here's one about how to create comic strips on the Make Beliefs Comix website."

For many LGBTQ+ kids, especially when they're figuring things out, finding accepting spaces online can sometimes feel safer. Seek out creative opportunities and modes of self-expression, with this section in Make Beliefs Comix.

READ ABOUT US IN THE NEW YORK TIMES!

ARTICLE #1: (click on the link below)
MakeBeliefsComix encourages students to create their own visual pandemic diary.

ARTICLE #2: (click on the link below)
One easy way to start playing with ideas is through the free, online tool at MakeBeliefsComix.com.

# data[].attributes.attachment_link.title
Create Comics Online, it's Fun & Free at MakeBeliefsComix!

# data[].attributes.attachment_link.description
Create comics online at MakeBeliefsComix. A fun way educators & parents can empower students to express ideas and stories in comix!

# data[].attributes.attachment_link.description
Typing tests for programmers with code in JavaScript, Python, Java, Ruby, C++, PHP, and more. Test your real WPM.

# data[].attributes.attachment_link.title
IXL | Math, Language Arts, Science, Social Studies, and Spanish

# data[].attributes.attachment_link.description
IXL is the world's most popular subscription-based learning site for K-12. Used by over 14 million students, IXL provides personalized learning in more than 9,000 topics, covering math, language arts, science, social studies, and Spanish. Interactive questions, awards, and certificates keep kids motivated as they master skills.

# data[].attributes.attachment_link.title
Tutorial Among Us Crewmate Amigurumi IN 1 HOUR! | Crochet | Lanas y Ovillos in English

# data[].attributes.attachment_link.readable_text
What Is Mindfulness?

Mindfulness is paying full attention to the present moment. It means taking your time to really notice what you're doing.

Mindfulness happens naturally sometimes. Let's say you're getting ready to take a foul shot in basketball. You carefully position your feet at the line. You look up at the hoop and feel the ball in your hands. Taking your time, you dribble the ball once or twice. You tune out all distractions and take your shot. Swoosh - yes! That's mindfulness in action.

Why Do People Need Mindfulness?

Mindfulness helps you do your best at things. When you're mindful, you:

pay attention better

are less distracted

learn more

stay calm under stress

get tasks finished

It also can improve your mood. It may help you:

avoid getting upset too easily

take your time instead of rushing

gain self-control and self-awareness

feel happier and enjoy things more

It can even help you in social situations. Those who are mindful:

listen better when others are speaking

are more patient

get along better with others

How Does Mindfulness Work?

Training the mind takes practice. The more you practice mindfulness skills, the better you get at being mindful.

If you practice mindfulness skills, mindfulness begins to come naturally when you need it in your everyday life. This can help you feel calmer when you're stressed, or more focused when you have to do something hard or complicated.

As you practice, you train your attention. Practicing mindfulness can improve attention for just about everybody - including people who have ADHD, or who think they have trouble paying attention.

How Do I Get Started?

Mindfulness skills take just a few minutes a day to practice. There are many different types of mindfulness exercises, such as meditation, mindful breathing, and even mindful eating.

To get started, try this mindful breathing exercise:

Step 1. Sit or lie comfortably and put one hand on your stomach, the other on your chest.

Step 2. Close your eyes and try to relax all your muscles, one by one, from the tips of your toes to the top of your head, especially the muscles in your face, neck, and jaw. You may be storing a lot of tension there.

Step 3. Breathe deeply and regularly for several minutes- and try to make your stomach (abdomen) rise and fall, not only your chest. This will help you deepen your breath.

Step 4. Pay attention to each breath. Try to turn all your thoughts to each inhale ... exhale. As you breathe out, imagine the tension leaving your body with the breath.

Step 5. Notice when your mind wanders, and gently bring your focus back to your breath. Imagine letting go of each distracting thought like a balloon drifting away, or any other imagery that works for you.

That's it! Remember that there are other ways to practice mindful breathing too. Go ahead and try a few different mindfulness exercises to see which ones work best for you.

# data[].attributes.attachment_link.description
Mindfulness helps people do their best at things, whether that's focusing on a task or getting along with others. This article for teens has details on practicing mindfulness so you can make it work for you.

# data[].attributes.attachment_link.readable_text
Step 1

Welcome! Place the ||basic:show string|| block in the ||basic:on start|| slot. Replace the "Hello" text with your name. Did you see it scroll in the simulator?

basic.showString("Micro!")

Step 2

Well, the text stopped scrolling. Place the ||basic:show string|| block in the ||input:on button pressed|| slot to scroll your name when button A is pressed.

input.onButtonPressed(Button.A, () => { basic.showString("Micro!") });

Step 3

Place some blocks to display a smiley when button B is pressed.

Use the dropdown to find B!

input.onButtonPressed(Button.B, () => { basic.showLeds(` # # . # # # # . # # . . . . . # . . . # . # # # . `) })

Step 4

Place the ||basic:show number|| and ||Math:pick random|| blocks in an ||input:on shake|| block to build a dice.

input.onGesture(Gesture.Shake, () => { basic.showNumber(randint(0, 10)) })

Step 5

A typical dice shows values from 1 to 6. So, in ||Math:pick random||, don't forget to choose the right minimum and maximum values!

input.onGesture(Gesture.Shake, () => { basic.showNumber(randint(1, 6)) })

Step 6

If you have a micro:bit, connect a USB cable to it and click |Download|. Save the program to the MICROBIT drive. This transfers your code to the micro:bit!

Step 7

On the micro:bit, press button A to scroll your text. Press button B to show a smiley. Shake the micro:bit and see which number is chosen.

Step 8

Well done! You've completed your first Microsoft MakeCode activity.

# data[].attributes.attachment_link.description
Welcome! Place the ||basic:show string|| block in the ||basic:on start|| slot. Replace the "Hello" text with your name. Did you see it scroll in the simulator?

# data[].attributes.attachment_link.keywords[]
educational technology education technology companies technology and education how important is technology in education educational technology tools learning educational technology educational technology in schools educational games educational games for kids free educational games for kids free educational games educational games online classroom games online classroom games halloween classroom games 5th grade classroom games classroom games for students games to play in the classroom kindergarten classroom games learning games for kids learning games free learning games kindergarten learning games free kids learning games

# data[].attributes.attachment_link.description
Breakout EDU gamifies learning to create an engaging and empowering experience for students of all grade levels.

# data[].attributes.attachment_link.description
Make on-brand videos with the leading online video maker. Biteable is the leading solution for creating concise, engaging, on-brand video content.

# data[].attributes.attachment_link.description
An interactive sandbox for learning how to code on the web.

# data[].attributes.attachment_link.description
The best drawing experience in a browser

# data[].attributes.attachment_link.readable_text
You need to be on a computer with a keyboard. Mobile touchscreen devices won't work (see Known Bugs below).

Make sure you have your sound turned on for the fully-immersive experience!

Just like a real manual typewriter, you can only press one character key at a time. You must release each key before pressing the next. Most people naturally overlap keypresses when typing on a computer keyboard - you may need to change your typing style to avoid skipping characters when typing at speed (see FAQ for more info).

As well as just typing normal text, you might like try these:

You can use the cursor keys to move around. The up and down cursors move the roller by a quarter-line.

Use [tab] and [shift][tab] to jump forward or back to the nearest tab stop.

Hold down [esc] for "colour shift", which gives you red text. Or, sometimes, only partly so...

[shift] and/or [esc] can be locked down by holding one or both and pressing [caps lock] (effectively "shift lock"). Press [caps lock] again to unlock.

Move the sliders (see "Sliders" below)

Use the correction paper to erase your mistakes (see "Correction Paper" below)

Make a dollar sign by overtyping a capital S with a | (vertical bar/pipe)

Ready? Just start typing, or click here if you prefer: START!

Try out the sliders at the top of the screen. The ribbon ink reduces linearly, which is not how a real typewriter would work but gives a more pleasing result. The "brokenness" controls how uneven the vertical alignment, ink density and colour shift are, and higher settings cause keys to start breaking (once a particular key has broken, it will never work again until you reduce the brokenness back down).

OverType provides virtual correction paper to help correct your inevitable typing errors. To use it, move the cursor to the character you want to erase, click the "Load correction paper" button, and type the same character. Its effectiveness varies depending on brokenness and ink level. This is an initial implementation and improvements are planned - your feedback is welcome.

As it stands, this site is unlikely ever to work on a touchscreen device without a real keyboard, due to the problems of dealing with an on-screen keyboard. If I use the device's own on-screen keyboard there are issues with forcing it to appear without a visible input field, keeping it there, working around it etc. I've tried making my own virtual keyboard instead (a bunch of <button>s with handlers attached to touch events) which kinda works but is rather sluggish, and there are issues with the sounds. I think for mobile use it will need to be a full-blown app with its own input handler, rather than a web app. I may attempt it at some point, if anyone really wants it.

If shift lock is on, and you press a non-alphabetic character key that you have not yet pressed in conjunction with shift, the program has no way of knowing what the shifted character should be for your particular keyboard, so it will default to using the shift characters from my UK Apple keyboard. Once you have pressed a key in conjunction with shift, the program remembers the correct shift character for that key and will use it when shift lock is on.

The correction paper needs some tweaks to make it more realistic - eg if you reuse a bit that you've already used, it should be less effective in the shape of the previous character typed there. In general it should probably be more "all or nothing" - patchy at low ink levels rather than faded. This is just a first draft of the feature.

If you type too fast or try to type two keys at once, the mechanism should sometimes jam, rather than just ignoring the latter keypress. Amazingly, this is the most commonly requested feature from the beta testers of this program. The only reason I haven't implemented it is the problem of designing a UI to represent unjamming it by picking the mechanism apart, and how to make your fingers inky and oily when you do it.

Choice of paper backgrounds (but of course you are free to choose the paper you feed into your printer anyway!).

Further suggestions welcome (please read the FAQ below first, and remember this is just for fun!) to ben@uniqcode.com.

Why did you write this?

It started because I was trying to tell my kids about how typewriters worked (because of course they'd never seen one), so I looked for a typewriter simulator on the web, but all the existing ones that I could find get one very basic thing wrong - when you press backspace, they erase the character you just typed, like a computer. On a real typewriter, backspace simply moves the carriage back one space, allowing you to overtype a previously typed character. Erasing requires Tipp-Ex or suchlike.

One day my youngest son suggested I should write one that works the right way and allows overtyping. This seemed like it would be an interesting challenge... and indeed it was. The first version took me about an hour.

Since then it's all got a bit out of hand as I strive to make the program's output "worse" by trying to faithfully re-create some of the other interesting eccentricities of typewriters that have been eliminated in the computer age, such as wobbly and unevenly-inked characters. Thanks to all the beta testers for their great suggestions and feedback.

Why are some of my keypresses being ignored? / Why can't I type at my usual speed?

On a manual typewriter, only one (striking) key may be pressed at a time, otherwise at best the second key's hammer gets blocked by the first, and at worst the hammers may get tangled together and require picking apart. OverType replicates this (just the blocking, not the tangling, for now...) by ignoring any keypresses that happen when a character key is already being held down. Because you are used to typing on a computer, you almost certainly overlap your keypresses without even realising it. Be sure to release each key before pressing the next.

Likewise, you cannot type during a carriage return. You have to wait for it to finish.

How do I print what I've typed?

Just use your browser's standard Print function. It will use the print stylesheet, which omits all the on-screen controls, page border and background, and just prints the contents of the page.

How do I save/export?

You can use your operating system's "Print to file" function (on a Mac, the "PDF" button in the bottom-left of the Print dialog). As with printing to an actual printer, this will just render the contents of the page, not the controls or background. Alternatively, if you want the background and your text fits on the screen, take a screenshot.

How can I save as plain text or in Word format for later editing?

You can't, for two reasons. Firstly, it's completely against the spirit of a manual typewriter. Secondly, the whole purpose of this program is to replicate features of a manual typewriter that computer programs such as word processors and text editors cannot replicate, such as overtyped, unevenly inked, and wobbly characters. If you could export as text you would lose all of that. If you want editable text, use a word processor or text editor like a sane person...

Are you watching what I type? / Can I save files on the server?

No. The code runs entirely on your machine; no data is sent back to the server.

I love this so much I want to give you some money / hire you to write code for me!

That's great, thanks! Donations of any size are always welcome to my Paypal account, ben@qolc.net (please don't email me about OverType at this address - use the one above).

I'm a freelance full-stack LAMP developer with 20 years' experience. My specialities include PHP, Perl, jQuery, Linux sysadmin and MySQL; if you have a job offer to discuss, I'd love to hear from you - please email info@uniqcode.com.

version 1.34 (2015-08-12)

New font available: GNUTypewriter.

Add button to hide/show the topbar controls.

version 1.33 (2015-08-09)

Fix offset page when printing.

version 1.32 (2015-08-09)

The correction paper will be automatically unloaded for any vertical movement, not just CR.

Add info about how to use the correction paper.

Accordionise the info page, and a new introduction written in OverType itself.

version 1.31 (2015-08-09)

Virtual Correction Paper is here at last! This is just a first draft of it; it needs tweaking to be more realistic.

version 1.30 (2015-08-05)

Always scroll the viewport to the current typing position when typing - useful if you've been scrolling through the instructions.

Replace the simplistic keydown and keypress mutexes with records of *which* keys are being held down; this allows us to ignore keyboard auto-repeat, and only advance and allow further typing when all keys have been released.

Upgrade Ion.Sound to 3.0.6

version 1.29 (2015-08-04)

Fixed crash in Safari when enter was pressed twice in a row.

Upgrade Ion.Sound to 3.0.5

version 1.28 (2015-08-03)

Don't let the sliders or font selector keep focus. This avoids them reacting to certain keypresses (eg cursor keys). Apologies if this causes accessibility problems for anyone.

Rearrange instructions page and add FAQ.

version 1.27 (2015-05-15)

Choice of fonts. Improved appearance of header. Fix an issue with redshift. Textured page background on screen.

version 1.26 (2015-03-07)

While a CR is in progress, ignore all other keys. Previously it was possible to prematurely type characters at the beginning of the next line before the CR had completed.

version 1.25 (2015-03-07)

Upgraded Ion.Sound to 3.0.0 (and use latest jQuery and jQueryUI while we're at it).

The Ion.Sound upgrade fixes the problems with sound synchronisation on Safari, so removed all the warnings about not using it.

version 1.24 (2014-03-16)

Fix printing, which got broken in a previous version.

version 1.23 (2014-03-05)

Do away with the off-screen textarea altogether; just bind the event handlers to $(document).

version 1.22 (2014-02-27)

Don't play the motion part of the CR sound if we are already at the beginning of the line (otherwise it was playing a tiny bit of it, which sounded bad).

Animate a little wobble at the stop part of a CR. It just seemed like the sound demanded it.

version 1.21 (2014-02-26)

Separated carriage return sound into motion and stop sounds. The motion sound length depends on the line length, while the stop sound is the same for all.

version 1.20 (2014-02-26)

Fix certain symbol characters not working since 1.19 (or possibly earlier on Chrome).

Fix colourshift lock always acting as caps lock too.

Fix shift lock. We have no way of determining in advance which symbols are produced by which shifted key on your particular keyboard layout; so, shift-lock starts off using my keyboard layout (UK Mac), but whenever you use shift (unlocked), it will learn the real symbol on the shift position of that key, and will thenceforth use that in shift-lock too.

Fix releasing shift/colourshift lock not working properly on Chrome/Mac. The fix for this is slightly shonky but can't be helped due to the insane differences between browsers on which events capslock fires.

Tweaks to timing and keydown/keyup sounds to try to improve responsiveness and make it a bit harder to type far too fast for the sounds to keep up.

version 1.19 (2014-02-24)

version 1.18 (2014-02-24)

Bail if no rbga() support, and try to warn Safari users

version 1.17 (2014-02-23)

version 1.16 (2014-02-18)

version 1.15 (2014-02-15)

version 1.14 (2014-02-12)

2-colour ribbon. Hold [alt] to type red characters. Sometimes these will randomly be only partially red, to simulate failing to press the colour shift key hard enough. The frequency and amount of this failure is affected by the Brokenness control.

version 1.13 (2014-02-12)

version 1.12 (2014-02-12)

Cursor key support. Left and right are the same as backspace and space. Up and down feed the paper by a quarter of a line height at a time.

Use a position:absolute div for each character within position:relative output block. I had hoped this would allow me to do away with the input textarea altogether and bind the key handlers to $(document), but alas even with preventDefault(), some keypresses were still occasionally being passed through to the browser, causing it to scroll (space), go back a page (backspace) etc. Still, this way of positioning seems more flexible so I kept it.

version 1.11 (2014-02-12)

version 1.10 (2014-02-11)

fix CSS font-family (whoops)

per-char vertical offset was not being used consistently

version 1.9 (2014-02-11)

Stylesheet for printing

Increased space between lines

version 1.8 (2014-02-11)

The ribbon ink now gradually runs out, so the text becomes lighter the more characters you type.

Reduced vertical offset, as it was just a tad too wibbly-wobbly.

version 1.7 (2014-02-11)

Prevent the hidden textarea from losing focus. It should now be safe to click anywhere on the page.

Implemented tab stops every 8 chars - press TAB to jump to the next tab stop, SHIFT-TAB jumps to the previous one.

version 1.6 (2014-02-11)

If both shift keys are pressed, don't do the keyup sound until both are released.

Round the vertical offset to an integer number of pixels.

Don't release the keydown mutex until animations have finished. This limits typing speed and prevents being able to type a character onto the next line while a carriage return is in progress.

version 1.5 (2014-02-11)

Use a separate mutex for the shift key.

Position the page on load so it doesn't jump after the first keypress.

version 1.4 (2014-02-11)

Move paper on keyup, not keydown.

Use a mutex to ensure only one keypress is handled at a time, instead of a timeout (also fixes a long-held key generating two characters).

Each character now has a consistent vertical offset (randomly chosen at the start), instead of randomly changing each time.

Drop shadow on page.

Fix page moving too far vertically on CR.

version 1.3 (2014-02-10)

The typed character now always appears in the centre of the screen; the "paper" moves. Movement of paper and carriage return are animated.

A basic cursor to show where the next character will appear. This could eventually become an animated print head.

Wibbly-wobbly text: A small random vertical offset is added to each character (suggested by David Gosnell)

version 1.2 (2014-02-10)

Don't allow backspacing past the beginning of the line.

version 1.1 (2014-02-10)

Separate sounds when keys are pressed and released, and for the shift key.

Better (manual) carriage return sound.

Limit the speed at which you can type.

If you keep typing past the bell and hit the end of the line (80 characters), the carriage stops instead of continuing. In other words there is now a hard line length limit.

Punctuation characters are handled (these are based on my UK Mac keyboard; unless you have the same keyboard some characters will probably be "wrong" for you.).

Random variation of colour to simulate variations in key pressure and uneven ribbon ink.

Hide all the informational text when you start typing, partly to give more space for both information and typing, but mostly to dodge the problem of trying to work out where to position the typewriter output so it doesn't crash the info.

version 1.0 (2014-02-09)

# data[].attributes.attachment_link.title
OverType - The Over-The-Top Typewriter Simulator

# data[].attributes.attachment_link.description
You need to be on a computer with a keyboard. Mobile touchscreen devices won't work (see Known Bugs below). Make sure you have your sound turned on for the fully-immersive experience! Just like a real manual typewriter, you can only press one character key at a time.

# data[].attributes.body
Have an East Hartford library card? Download the Overdrive app and sign in using library card to access thousands of e-books and audiobooks.

# data[].attributes.attachment_link.description
Browse, borrow, and enjoy titles from the Library Connection, Inc. digital collection.

# data[].attributes.attachment_link.readable_text
Zen photon garden is an interactive raytracer art-toy for HTML5 browsers.

But it looks like your browser isn't supported!

Try the latest version of Chrome or Firefox.

(You'll need JavaScript, Canvas, Web Workers, and Typed Arrays.)

# data[].attributes.attachment_link.description
An interactive raytracer art-toy for HTML5 browsers.

# data[].attributes.attachment_link.title
Coding Courses & Computer Science Curriculum - CS First

# data[].attributes.attachment_link.description
Find coding courses and computer science lessons to use with your students. All of the materials in the computer science curriculum are free and easy to use.

# data[].attributes.attachment_link.title
Beatmaker: Make a Beat for Free on Splice | Splice

# data[].attributes.attachment_link.description
Make a beat from millions of royalty-free samples and loops, then save your beat or download as MIDI.

# data[].attributes.attachment_link.title
Typing Lessons | HTML - The Structure of a Webpage - Typing.com

# data[].attributes.attachment_link.description
HTML - The Structure of a Webpage | Introduce coding keyboarding skills

# data[].attributes.attachment_link.description
GeoGuessr is a geography game which takes you on a journey around the world and challenges your ability to recognize your surroundings.

# data[].attributes.attachment_link.readable_text
Send Feedback

To save, right click the thumbnail and choose Save Image As....

Drag colors to blend.

Press Space to start anew.

Press Z to undo.

Try different colors and symmetries.

Sally forth, you weaver of wonder, sower of silken waves.

# data[].attributes.attachment_link.readable_text
micro:bit & the Global Goals

do your :bit brings together the micro:bit and the UN's Global Goals to provide inspiring activities for your classroom or club and an exciting digital challenge for you to run.

Resources for your classrooms and code clubs

Use the resources on this page to introduce the Global Goals, have fun with the micro:bit and develop world-changing ideas and solutions using technology.

The do your :bit challenge is changing

From January 2023 anyone who wants to run do your :bit in their school or club can do so with the support of our online resources. To ensure as many young people as possible can get involved and inspired, do your :bit is no longer run as a global competition by the Micro:bit Educational Foundation.

If you are running a do your :bit challenge for your students, we'd love to hear about it. Email us on info@microbit.org and tell us about your plans, or share your creations on social media using #doyourbitwithmicrobit.

Run your own do your :bit challenge

do your :bit challenge pack

To help you run the challenge, we've put together a pack of materials to help you celebrate your students' success, each step of the way.

Download certificates, posters, bunting, sticker sheets and our logo to run your own do your :bit challenge. The download bundle also includes guidelines for use of the do your :bit logo.

Global Goals guides

The UN's Global Goals or Sustainable Development Goals (SDGs) are a call for action by all countries to promote prosperity for everyone while protecting the planet. Use our guides to introduce the Goals to students and young people.

micro:bit projects

Quick projects in MakeCode to help you explore the Global Goals with the micro:bit!

Lessons

Use our Lessons to run prototyping activities linked to the Global Goals.

Only available in English language.

Inspiration

You can get inspired in your own classroom by exploring the creative solutions designed by previous participants in the do your :bit challenge.

do your :bit is no longer run as a global competition by the Micro:bit Educational Foundation but you can use our resources to run your own local version and ensure as many young people as possible can get involved.

# data[].attributes.attachment_link.title
do your :bit activities for your classroom

# data[].attributes.attachment_link.description
do your :bit brings together the micro:bit and the UN's Global Goals to provide inspiring activities for your classroom or club.

# data[].attributes.body
Design your world with the Disney Imagineers!

# data[].attributes.attachment_link.readable_text
If you're seeing this message, it means we're having trouble loading external resources on our website.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

To log in and use all the features of Khan Academy, please enable JavaScript in your browser.

About this unit

Have you ever wondered how theme parks come to life? Disney Imagineers from hundreds of career disciplines around the world share how they use a wide range of skills - from story development and conceptual design, to math, physics and engineering - that all come together to create immersive experiences. Imagineering in a Box allows you to explore different aspects of theme park design, from characters to ride development, as you design a theme park of your very own.

# data[].attributes.attachment_link.title
Imagineering in a Box | Storytelling | Arts and humanities | Khan Academy

# data[].attributes.attachment_link.description
Have you ever wondered how theme parks come to life? Disney Imagineers from hundreds of career disciplines around the world share how they use a wide range of skills - from story development and conceptual design, to math, physics and engineering - that all come together to create immersive experiences.

# data[].attributes.attachment_link.readable_text
Have you ever tasted an Arab taco?

When was the Arab taco invented?

What is shawarma?

Find it out

How are currency exchange rates determined?

What was the gold standard?

Which type of currency exchange rate system does the U.S. use?

Find it out
Which of the following is usually NOT a factor in determining currency exchange rates?

Test your knowledge

Based on information from the Wonder, what was Lou Castro known for when he was alive?

Test your knowledge

What is an okapi?

Where do okapis live?

What do okapis eat?

Find it out

How can I use Wonderopolis?

What are the parts of a Wonder?

How do writers make a Wonder?

Find it out

# data[].attributes.attachment_link.title
Where the Wonders of Learning Never Cease | Wonderopolis

# data[].attributes.attachment_link.description
Where the Wonders of Learning Never Cease

# data[].attributes.attachment_link.description
Blackout poetry is made by colouring over parts of an existing text, so that only selected words remain visible, creating a poem. To use this tool, you can select a text from the samples, or paste your own text source into the custom text field.