Scratch is a very easy to use and learn language designed by the MIT Media Lab mainly intended to introduce programming to children aged 7-16. I can be fun to older people as well. Scratch is a visual programming language. It can be accessed as a free desktop and online multimedia authoring tool that can be used by students, scholars, teachers, and parents to easily create games and provide a stepping stone to the more advanced world of computer programming.
Getting started with the Scratch is easiest if you have web browser that support Flash: Just go to Scratch web site at https://scratch.mit.edu/. Viewing the existing projects available on the Scratch website, or modifying and testing any modification without saving it requires no online registration. Scratch allows users to use event driven programming with multiple active objects called “sprites” (either vector or bitmap graphics). You can use Scratch for example to make animated stories, and interactive art, music and games (technology is used in the game creation tool Stencyl). You can test how the examples work, look how they are built and even change how they work – all in your web browser and in many languages. The idea is that you can create stories, games, and animations to share with others around the world (and they can make their own adaptation of them).
Pong Starter is a good starting point to get into the idea how Scratch works:
DJ Scratch is a simple project that mixes sounds based on the keys you press on your keyboard.
If you are into making games, check out The Ninja 2 game project. Just make few changes (like your own player character) and you have a full game to play…
Technology behind Scratch on browser
Scratch in the web uses Flash technology for presenting the interactive content. Why Flash editor over HTML5? Currently used Scratch 2.0 is a completely flash-based program, in which both the project editor and project page viewer use the same player, the Flash player. While I don’t like Flash too much, I think it is better than Java Player used in earlier version.
HTML5 support may be coming some day. The HTML5 Player is an upcoming project viewer that will allow projects to be run on any device that executes HTML5 code. This will allow for projects to be viewed on tablets, smart phones, and most internet devices, because multiple devices support HTML5 unlike Flash. The code for the HTML5 player has been posted on GitHub here. The project is far from complete and needs for example PHP proxy between another domain and Scratch
Interfacing hardware and other software to Scatch
The simplest way to connect some external hardware (like for example sensors and controls) to your Scratch app is to use hardware that emulates keyboard and mouse operation. I have for example earlier tested Makey Makey invention kit: The computer just thinks MaKey MaKey is a regular keyboard. It sends key codes to computer when you use your own touchpad keys. MaKey MaKey can also emulate a mouse. This method works on web and desktop versions.
Sometimes just creating just interactive multimedia that runs on browser is not enough – maybe you need to control some hardware from your Scratch application. In that case you need to install free desktop editor. Using Scratch 2.0 Offline Editor you get some new tricks that you can do with Scratch: Interacts with hardware and other software running in the computer. Scratch 2.0 cannot interact with hardware devices directly, but with hardware extensions that come with a helper app it is possible to make Scratch applications to talk hardware devices and other software.
At the moment Scratch communicates with the helper app via HTTP requests, and the helper app talks to the hardware. In the future, some extensions may package their helper apps as browser plugins.
The Remote Sensors Protocol or Scratch Extension Protocol is an experimental extension feature that allows interaction between Scratch and other programs. Messages are sent in both directions over the socket connection (Scratch listens for connections on TCP port 42001). A sensor update message includes one or more (variable name, value) pairs.
It is also possible to construct a UDP packet from scratch and inject it on a WiFi interface in Linux.
Interfacing Scratch to Arduino
There are lots of people who are very comfortable with the Scratch programming environment but want to try something with Arduino to Blink Lights, Sense Buttons, Run Servos or whatever.
An Arduino extension is available on ScratchX, a Scratch sister site hosting experimental extensions. See the instructions for the experimental Arduino extension for Scratch.
S4A is a Scratch modification that allows for simple programming of the Arduino open source hardware platform. It provides new blocks for managing sensors and actuators connected to Arduino. In S4A, an Arduino board is represented by a special kind of sprite. S4A works with Arduino Diecimila, Duemilanove and Uno. S4A interacts with Arduino by sending the actuator states and receiving sensor states every 75 ms. S4A requires you to install software both in your PC and your Arduino board. S4A allows for 6 analog inputs (analog pins), 2 digital inputs (digital pins 2 and 3), 3 analog outputs (digital pins 5, 6 and 9), 3 digital outputs (pins 10, 11 and 13) and 4 special outputs to connect Parallax continuous rotation servomotors (digital pins 4, 7, 8 and 12). Using Scratch Programs you can make Arduino Flash Lights, Read Buttons, and do many of the things that you can do with the the regular Arduino environment.
Using Scratch as SCADA interface
Simple SCADA using Scratch and OSHW article shows how to build Simple Supervisory Control and Data Acquisition (SCADA) using Scratch and some open source hardware boards connected to a GNU/Linux Ubuntu computer using USB. With a Scratch that has remote remote sensor connections enabled you can connect to an interface software that handles the communications with your USB hardware that does the actual controlling.