Archive for the ‘Life Force Learning Center’ Category

Links to Scientology Official Sites

23 April 2017

I give you this comment from “José” as a brief post to provide you with good links to vital information:

Hello and thank you for the information.

I would suggest that, if you are going to mention isolated pieces of information from Scientology to the general public, please refer your public to the source materials where they can find the information in sequence with examples, to avoid causing misunderstandings to people that never heard the subject of Scientology.

1.- Please, always refer first to What is Scientology, here the official link:
http://www.scientology.org/what-is-scientology.html#slide7

2.- Second, the subject you are mentioning in your respective blog entry, in this case the Tone Scale, in my opinion this is a good entry point:
http://www.scientologyhandbook.org/tone-scale/sh4_1.htm

3.- Please use references to the Scientology Manual which it is a good introduction to Scientology fundamentals for daily use in every part of life.
http://www.scientologyhandbook.org/

Best regards
José

My favorite site, which I should probably include a link to in every post I make, is the Volunteer Ministers training pages: http://www.volunteerministers.org/training.html

…starting to come together…

1 November 2015
interactive art rack

Equipment rack for interactive art projects.

The idea of making interactive art didn’t occur to me until rather recently. I got into electronics via audio – amplifiers and the like – and then started getting interested in music synthesis. Later I got into measurements, digital control, and computers.

During my Sea Org years I realized that not many people knew about basic electricity and electronics, yet Hubbard was using examples from those subjects in his books and lectures. So that gave me the idea of a learning lab centered around electronics. The Exploratorium in San Francisco is an example of an interactive learning environment. I wanted to do something like that at home.

It was not until 2009, when I had a lot of time on my hands but not much cash, that I started buying used gadgets at Goodwill and re-purposing them at my workbench. It was at this point that I started working on interactive “art” designs – possibly inspired by Halloween.

Making interactive art installations using electronics is certainly not an original idea with me. There are lots of examples out there, from merely cute to ponderously imposing. I was thinking in terms of something someone might have in a room at home, that would sort of “wake up” and start doing things when people came in. The development of such a system, though, was a lot more involved than I originally imagined. I still don’t have a fully interactive “dream” system up and running. But I have lots of pieces of one, and I needed a way to tie them all together.

The numbers of inputs and outputs that would probably be needed to develop such a system was difficult for me to confront. I imagined something like the old MOOG synthesizers – a mass of patch cables. But nothing seemed to come together until I purchased a used Extron video switching system for the aluminum enclosure, and found out what the back panel looked like. More signal connectors on one panel than I’d ever seen before! Finally I started working on a couple such panels to modify them to do what I thought I would need. It was not the easiest project I’ve ever attempted, but it’s beginning to be actually usable.

Technical details

I have chosen the 19-inch rack-mount form factor for my work. It is the most widely-used mounting system for professional equipment. The average rack cabinet, however, is designed for enclosures that are rather deep (more than a foot), while the things I am making are quite shallow (less than 1/2 a foot). But moving beyond the 19-inch equipment rack is another project.

Let’s go through the equipment in the top photo:
1) A row of four voltage-controlled fans, inspired by a TED Talk I saw of a guy who did some amazing things with remote-controlled fans.
2) Example of a piece of used equipment, not yet re-purposed.
3) A system for developing Arduino projects, made from a used enclosure, of course.
4) My matrix of connectors, used to route various control signals to displays or similar devices. You can see that this isn’t finished yet; none of the controls have knobs!

So far I only have a few displays and sensors to experiment with. But several others are just waiting to be finished.

Audio in or audio out?

In another part of the room, my audio rack has been newly re-assembled.

While my interactive art focuses on sound and motion as inputs and light patterns as outputs, on this rack the output is sound. That means it includes two speakers and a stereo amp, effects to be applied to sound inputs, and the beginnings of a synthesizer. Also included is my latest version of my “LED oscilloscope” and tone generator.

audio rack

Equipment rack for audio projects.

Everything is made from used gear re-purposed for what I want it to do. And all these projects are in a constant state of re-development. I keep older gear until I find or make something better to replace it with. The older stuff gets trashed or re-used inside newer projects.

Organize or perish!

The decision to organize better did not come easily. Organizing and rebuilding old equipment takes time, so I can only do so much of it. But it is a rock-solid basic ingredient to making any activity viable. So I’ve been pushing it forward, and wanted to document the current scene.

A Tale of Two Towers

19 April 2015

No, it’s not another 9/11 exposé. For my favorite on that subject see Courtney Brown’s website.

This is a little long-delayed article on making electronic equipment for a hobbyist workbench.

Here’s a view of my two towers:

the two towers on my workbench

Inception

I have designed and built a lot of test equipment for my hobby. I still do.

But a lot of it I end up hardly ever using, or using just once. I had a need. I built something to fill the need. It filled the need. And the need never returned. Or so it seemed.

But some needs kept coming up. A quick source of power. Need to measure a voltage. Need to measure a current, or a resistor, capacitor, sometimes even inductor. I had created a lot of different solutions for these basic needs and usually put them in some sort of horizontal enclosure. This was the standard approach. However, if I put the thing close to me so I could use it, it blocked access to the rest of the bench. And if I put it further away, I never used it, opting instead for something portable that I could put on the bench temporarily then put back somewhere else.

So one day (a year ago?…hard to say when for sure) I got the idea of trying a vertical arrangement. Maybe this was the compromise design that would keep the tools I needed the most close at hand without blocking my access to the rest of the bench.

I started on Tower One. I had a piece of plastic I was going to use for some sort of rack-mount project (19 inches wide) so I just turned it on its end and made a cabinet out of it.

tower one

Tower One

I wanted all the stuff I had put in past designs in this one. A bunch of power supplies, including a variable one. At least one meter. A selectable voltage divider and a bunch of current shunt resistors. And a signal generator. And since I was getting into Arduino, the signal generator would run on software.

I also wanted to include a “patch bay” that I could use to change cable connector types, as this was a constant problem.

And I came up with something.

It worked pretty well.

But after sitting on my bench for six months or so, it was obvious there were parts of it I hardly ever used. The minus supplies were one thing, but didn’t matter that much, as they didn’t take up that much space. The whole top section was not being used, either. The other parts were being used a good deal, but I wished I could monitor voltages and currents easier.

So I decided to build Tower Two.

tower two

Tower Two

I wanted to make this tower half the height of the other. I had a hard time finding a good enclosure, but finally decided to take the front panel of a rack-mount enclosure that I didn’t want and cut it in half. I used both halves, with a hinge between them. One half had the power supplies in it and the other half the rest of the electronics. I expanded my Arduino application to monitor 4 power supply outputs at the same time.

(I didn’t photograph the towers with the displays on because I thought they would just glare and look bad.)

I had to find a little stand to sit this on to get it up to near eye level, and settled on an old plastic speaker cabinet that was the perfect fit.

I simplified the “patch bay” to a few most essential connectors.

Result: I use the new patch bay all the time, but for some reason prefer the power supplies in the other tower. That’s probably because my current metering didn’t work out very well in the new tower.

I still use other tools quite often, including a little Radio Shack multimeter that I modified to work off an AC adapter, and a cute capacitor meter that I found online and installed in a rack-mount enclosure that sits to one side. This capacitor meter is very cool, as I often want to know cap values with more precision than they are marked – or can’t read the markings.

The Bench

This is probably the most productive bench I have ever used.

The Radio Shack temperature-controlled soldering iron is really nice, I have all my hand tools pretty well organized, and I don’t try to make it double as a table to eat at, as I used to with past workbenches in other apartments.

Yet the look of it is not yet that great, wouldn’t you agree? It still looks pretty messy.

Order is defined as a condition in which everything is in its proper place and performs its proper function.
– LRH
HCOPL 14 Feb 1980 Order Versus Disorder

So maybe I don’t totally have order in on my workbench yet. But at least I have some good guidance on what to do about it.

my workbench

Part of my workbench in a unusually cleaned-up state.

HDMI Exposed!

9 August 2014

It all started innocently enough…
I was wandering the aisles of my local Shopko when, there it was, seemingly alone on its shelf…a Blu-ray edition of Kubrick’s 2001 A Space Odyssey (1968). I had never seen it. Well, I thought, I should pick it up and find a way to play it…

Digital Video

Blu-ray is a data storage technology. A blu-ray optical disc has roughly 25GB of storage capacity compared to 5GB for a DVD. It uses a blu-violet laser to read the disc and a smaller spot size.

The importance of this technology to “the industry” is digital video. Digital movies have become a huge business. They are also a most potent way for corporate America (or the global military-industrial complex – however you want to look at it) to get its messages across to a live audience. Story telling has always been used for this.

In the Old Days of video, the picture wasn’t digital. It was an analog signal combined with digital synchronizing signals. It was used for TV for years. Movies used film; they still do. But now the frames of film can be digitized into digital video. They put films onto video tapes for TV shows using a similar process. Video tapes were the first way for consumers to buy movies and watch them at home. But that video was very coarse compared to the film it was made from. And so the pressure was on to bring video up closer to the quality of film. Digital video was seen as the answer.

Home movie watchers want an experience more like they get at a movie theater. And that means “high-definition” (HD) video and “surround sound” audio. People have “theaters” in their homes all set up to view movies the way they are shown in a movie theater. And blu-ray gives people a way to buy (or rent) high-definition movies on disc.

Encoding

Digital data of any type must be stored using some sort of coding system. It’s just a binary number until it’s decoded and its significance to humans (if any) is retrieved. Computer science has worked out hundreds (if not thousands) of coding schemes to turn data that means something to people into streams of binary numbers. In its digital state, data is relatively meaningless. But while in that state it can be reliably manipulated to include, for instance, encrypting, which then requires someone who wants to decode it to also have a decryption “key.” Both of these features of digital data – encoding and encrypting – are seen as valuable to people who think they have the “rights” to the data and should be able to charge others for the privilege of using it.

HDMI (High Definition Multimedia Interface)

When I got home with my blu-ray disc, I discovered that none of the optical disc players in my house were blu-ray compatible. That means I had to purchase a player. I looked online and found a refurbished one at NewEgg for what I thought was a reasonable price and purchased it. When it arrived a few days later, I found out that the player had only one output on the back: HDMI.

I had heard of HDMI, but I had no equipment that used it. My DVD player outputs analog video and audio; easy to make copies from this output. But HDMI is totally digital; difficult to make copies from this output. That’s why “the industry” likes it!

Actually, the HDMI system is pretty cool. It has four channels of very high speed digital, transmitted on “differential” twisted-pair lines the way ethernet signals are. These channels can go really fast. That means they can squeeze high-definition video PLUS up to 8 channels of digital audio (32 channels with version 2.0) through an HDMI cable, plus let the source of the signal “talk” to the receiving equipment to ensure all licensing fees have been paid by the manufacturer of the receiver!

None of this solved my problem of not yet being able to view the movie I bought.

And I didn’t see buying an HDMI TV ($500 and up) as an option.

Handling the video signal

Video is relatively easy with HDMI. I have computer monitors with DVI inputs (another digital video connection system) and the signals are compatible. Just get an adapter that has DVI on one end and an HDMI connector at the other. Then connect disc player to monitor with an HDMI cable.

Problem: No sound!

Handling the audio

Older blu-ray players had analog audio outputs (I am told). I couldn’t find one. I tried a gizmo that converts HDMI to VGA video (that’s analog but for computers) and analog audio. My player talked to it and decided it wasn’t licensed. Nothing came out!

At this point I went a little crazy. I tried my best to research it all out on the internet and make the right decision. From what I read it sounded like I needed an “A/V Receiver” and maybe even an “A/V Preamp.” A/V preamps specialize in pulling the audio out of HDMI signals. They are considered “top end” and are très cher (very expensive). Not an option.

I settled for an older A/V receiver. It had lots of audio amplifiers. If worse came to worse, I could use them for something else. It had an HDMI input, so I figured all would be good. I wanted to make sure I would have one that worked so I bought two of them! The first one arrived, I opened it and got out the manual, and there in the fine print…”the audio signals which are input into the HDMI IN cannot be reproduced on this receiver.” Wow. I had 12 60 watt audio amplifiers at my disposal and still…no sound!

The next day I went back to Shopko and got a blu-ray player there that was on clearance sale for $70. It had a coaxial digital audio output. I remembered that the receiver had a coaxial digital audio input. I was going to be in business.

I haven’t studied the manual for my Sherwood RD-5405 Audio/Video Receiver yet. It’s a computer-controlled gizmo like all these “modern” electronic things are. But I read enough to figure out how to connect it up to some speakers I had laying around, and to my new blu-ray player, and to one of my computer monitors, and I finally got to watch the movie I’d purchased about 2 weeks earlier!

(See the next post for more about some movies I watched.)

Electronics Projects Update

28 July 2014
vacuum tube demo

Vacuum Tube Demonstration Project

Here’s a project I’ve had in mind for quite some time that has finally come together. The inspiration came from the item on the right; an LED lamp made in the style of a camping lantern. “I should put a vacuum tube inside that,” I thought, “you could look at it without worrying about hurting it or yourself.”

At the time I thought I could squeeze all the electronics needed to power the thing inside its bottom battery compartment. But I gave up on that; too cramped. So recently I finally put together a separate box that has all the power supplies needed plus some meters to show you what’s happening.

The display at the top left gives the approximate value of “B+” divided by ten. Below it is the voltage on the plate, also divided by ten. There is a 6,000 ohm resistor between B+ and the plate (or anode). The top right display shows heater voltage, measured directly. And below it is grid voltage, which is actually an inverted copy of the actual grid voltage, which is negative.

Here we have the heater at about 5 volts, the grid at about minus 3.5 volts, and B+ at about 136 volts. The plate is at 96 volts indicating that the tube is conducting about 136 – 96 / 6,000 amps = 6.7 milliamps. This tube is actually rated for 6 volts on the grid, a B+ of about 200 volts and plate currents of up to 30 or 40 milliamps. So I’m not stressing it (or my box) out too much.

Almost all of the materials used in this project are used. The enclosure still has its original panel label on it; a very nice aluminum enclosure. The electronics inside were cool for their day but have almost entirely been replaced with computerized equipment. The power supplies (4 – 48 volt switching supplies plus an 8.5 volt switching supply for the heater) are all used. The digital meters are new, as are most of the control electronics (but purchased from surplus suppliers Jameco and All Electronics).

I was glad to get this one materialized, as it was harder than I thought it would be.

Electronic Percussion

electronic percussion project

Electronic Percussion Project

Here’s a skimpy shot of the beginnings of an electronic percussion instrument. Most of this is new equipment, but not expensive. What you see here includes a stage rack made of black aluminum tubing, one of two BOSS percussion pads which I have had for a long time, and two new KAT pads. Each of the KAT pads has 4 sections, so the whole instrument has 10 striking surfaces in all. All the pads output audio samples of some preselected sounds. The two KAT pads also output MIDI control signals, so I can attach them to a synthesizer and play any sound I want.

Also hiding underneath these pads are used tube clamps from All Electronics. These are an important part of the project as I did not know how I would secure the pads to the stand. The clamps required adapter plates to convert from the hole pattern on the clamps to the hole pattern on the pads. For these I employed 1/8-inch-thick aluminum that was also being sold as used/surplus.

Inspiration

One of my inspirations for building an electronic percussion instrument was Gamelan Sekar Jaya, which I participated in for a year in 1980. There is the backside of I Wayan Suweca, the Balinese teacher who showed us all how to play our parts. At center-left (looking up) is Michael Tenzer, the original mastermind behind this gamelan, who bought the instruments in Bali. He’s now a music professor at the University of British Columbia.

sekar jaya berkeley 1980

Gamelan Sekar Jaya early rehearsal in Berkeley 1980

Panel Project – First Successes

30 April 2014
panel project illustration

My panel connected to a computer.

This is my first article about a project I have been working on for some little time now. I’m presenting it now because I finally got some important features of this project working.

Depicted above is my hardware for this particular project. The “control panel” was once part of a now-replaced flight training computer program. It supposedly represents some of the controls on a Cessna airplane. It was meant to be attached to an old-fashioned game controller to give it a “flight yoke.” I added the basic parts of such a game controller to the top of this panel, but am not using it yet, and probably won’t.

A Problem and a Solution

This panel is operated by a microcontroller that talks to the flight simulation computer program over an “old fashioned” serial communication line. These days microcontrollers are equipped with “flash” memory to hold their programs. This type of memory is permanent, but its contents can be changed. The older microcontrollers were programmed once and that was it. So there was no way for me to adapt this panel for my own use.

I had to rewire it with a new controller somehow. I found a way to do it (which I won’t get into here) using a Digilent product much like the Arduino Uno that I thought would have enough pins to connect to all these buttons. This product was purposely made to be programmed in a very similar way to the Arduino. As gone over earlier, this means this product uses a programming system that is a standard used for many different purposes today.

So, after installing the new microcontroller in the panel, I worked out – over a period of many weeks a few hours at a time – a program that would send out data about the panel. The code for this is gone over below.

Discovering a workable host program

I needed a program running on a computer to stand in for the flight simulation program that went with the original control panel. The original program was made for Windows. Those programs are a bit difficult to write! But there are several ways these days to achieve a similar effect. And one pretty good open source program-writing resource is Processing, which I covered briefly in a previous post.

I discovered that Processing had a little code “library” (a collection of usually short programs that adds a certain feature) for “old fashioned” serial communications. Many modern microcontrollers communicate to the computer that is used to program them through a USB cable that is set up to mimic an “old fashioned” serial communication line.

So all I had to do with the panel was program it to send “old fashioned” serial messages through its USB cable (which also powers it) to the host program written using Processing.

Below is a screenshot of a generic panel program I wrote using Processing to receive and display data from a panel of up to 64 (8X8) separate controls. Most of these controls would ordinarily be switches, and that is the only functionality I have implemented so far.

This panel has two other types of controls besides switches: Rotary switches called “encoders” and sliding controls that can be assigned numerous values depending on position. These are a little bit trickier than switches to code for, so I’ve left them for later.

This application shows a grid of colored rectangles with some text in them. They switch colors depending on data received from the physical panel. This screenshot shows that some of the positions on the panel are open or inactive (grey). A “1” from the panel results in a yellow box and a “0” results in a red box (I was going for something more orange, but I liked this color better). So this application just gives us a start at writing a host program that can take data from a control panel and act on it, do something with it.

panel display

Screenshot of the Processing application that displays the state of the panel.

The Code

With some trepidation, I present below the code more or less as I have written it so far. The data behind the slashes are “comments.” This is information that helps the program writer explain to himself or others what he or she is trying to do with a line or section of code.

The following code was written on the Multi-Platform IDE for uploading into the microcontroller that is wired into this panel.

/*
DigitalReadToSerialMonitor2
Reads digital inputs connected to the controller pins and sends
out the result on a serial communication line.
Modified extensively for the FS-100 application.
This example code is in the public domain.
This version implements simple handshaking scheme
to make sure the host is ready for the next message.
*/
// Set up global (can be seen by all other code) arrays of values:
int prevValues[8][8]; 
// 8 by 8 array holds previous state of the panel to compare to.
int valueArray[8][8]; 
// 8 by 8 array holds most current state of the panel.

void setup()
{
/* These setup steps are needed to tell the microcontroller
what its pins are connected to. I don't use all these pins 
in this particular program. */
pinMode(0, INPUT);
pinMode(1, INPUT);
pinMode(2, INPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);
pinMode(14, INPUT);
pinMode(15, INPUT);
// Below are the data lines that will be read by this code.
pinMode(34, INPUT);
pinMode(35, INPUT);
pinMode(36, INPUT);
pinMode(37, INPUT);
pinMode(38, INPUT);
pinMode(39, INPUT);
pinMode(40, INPUT);
pinMode(41, INPUT);

/*
The 3 volt outputs of the controller are connected to
inverting transistors ("buffer") that output 5 volt signals.
Reset needs a high pulse, so I give the buffer a low pulse.
This reset pulse is for the rotary encoders, not yet implemented.
*/
digitalWrite(7,HIGH);
delay(5); // delay() introduces a time lag in milliseconds.
digitalWrite(7,LOW); //reset the encoders just once
delay(5); // delay() helps make sure your timing works out.
digitalWrite(7,HIGH);

for (int i=0; i<8; i++) // this line implements a "loop"
{
  for (int j=0; j<8; j++)
    {
      prevValues[i][j] = 0; // This fills one array with zeros.
    }
 }
Serial.begin(9600); // This activates the serial comm line.
}

/* The Processing IDE uses a program element called draw()
to contain code that will be repeated over and over again. 
This IDE calls this loop() as it does not draw to the screen. 
Void refers to a method (function) that does things, 
but does not return any value. */

void loop()
{
/*
During each iteration of this loop, the panel is scanned
by issuing an address, then enabling the controls that are
at that address (up to 8) and reading their values.
Right now, all we are reading is digital (on or off)
controls. These data go into the valueArray.
Addresses are inverted due to inverting buffer...
Start with address 0 which is 111 inverted.
Output enable (on pin 6) is active-low. 
That means issuing a LOW turns it off (makes it HIGH).
*/
digitalWrite(6,LOW); // Ensure outputs are disabled.
delay(5);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);

digitalWrite(6,HIGH); // Now enable the control outputs.
delay(5);
// Below illustrates how an array is addressed in code.
valueArray[0][0] = digitalRead(34);
valueArray[0][1] = digitalRead(35);
valueArray[0][2] = digitalRead(36);
valueArray[0][3] = digitalRead(37);
valueArray[0][4] = digitalRead(38);
valueArray[0][5] = digitalRead(39);
valueArray[0][6] = digitalRead(40);
valueArray[0][7] = digitalRead(41);
digitalWrite(6,LOW);

// Repeat for address 2:
digitalWrite(6,LOW);
delay(5);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);

digitalWrite(6,HIGH);
delay(5);
valueArray[2][0] = digitalRead(34);
valueArray[2][1] = digitalRead(35);
valueArray[2][2] = digitalRead(36);
valueArray[2][3] = digitalRead(37);
valueArray[2][4] = digitalRead(38);
valueArray[2][5] = digitalRead(39);
valueArray[2][6] = digitalRead(40);
valueArray[2][7] = digitalRead(41);
digitalWrite(6,LOW);

// Repeat for address 4:
digitalWrite(6,LOW);
delay(5);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);

digitalWrite(6,HIGH);
delay(5);
valueArray[4][0] = digitalRead(34);
valueArray[4][1] = digitalRead(35);
valueArray[4][2] = digitalRead(36);
valueArray[4][3] = digitalRead(37);
valueArray[4][4] = digitalRead(38);
valueArray[4][5] = digitalRead(39);
valueArray[4][6] = digitalRead(40);
valueArray[4][7] = digitalRead(41);
digitalWrite(6,LOW);

// Repeat for address 5:
digitalWrite(6,LOW);
delay(5);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);

digitalWrite(6,HIGH);
delay(5);
valueArray[5][0] = digitalRead(34);
valueArray[5][1] = digitalRead(35);
valueArray[5][2] = digitalRead(36);
valueArray[5][3] = digitalRead(37);
valueArray[5][4] = digitalRead(38);
valueArray[5][5] = digitalRead(39);
valueArray[5][6] = digitalRead(40);
valueArray[5][7] = digitalRead(41);
digitalWrite(6,LOW);

// Repeat for address 6:
digitalWrite(6,LOW);
delay(5);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);

digitalWrite(6,HIGH);
delay(5);
valueArray[6][0] = digitalRead(34);
valueArray[6][1] = digitalRead(35);
valueArray[6][2] = digitalRead(36);
valueArray[6][3] = digitalRead(37);
valueArray[6][4] = digitalRead(38);
valueArray[6][5] = digitalRead(39);
valueArray[6][6] = digitalRead(40);
valueArray[6][7] = digitalRead(41);
digitalWrite(6,LOW);

/*
Next step is to loop through and compare old values to new values, etc.
*/
for (int i=0; i<8; i++)
 {
   for (int j=0; j<8; j++) 
    { 
      if (prevValues[i][j] != valueArray[i][j]) 
        { 
          String outStr = String(i)+String(j)+String(valueArray[i][j]); 
// Here is where we implement the semi-handshake. 
            if ( Serial.available() > 0)
              {
                Serial.println(outStr);
              }
            else
              {
                delay(100); 
// If we don't get an answer in 100 milliseconds, send the data anyway.
                Serial.println(outStr);
              }
        }
    }
 }
/*
Now transfer new values to old values using loops.
*/
for (int i=0; i<8; i++)
 {
   for (int j=0; j<8; j++)
    { 
      prevValues[i][j] = valueArray[i][j];
    }
 }
  delay(5);
}

And here is code written in the Processing IDE to receive this data:


/**
 * SerialReadControlPanel
 * Larry Cox 2014. Developed from "Simple Read" and other code examples.
 * Read data from the serial port and change the color of a rectangle
 * This code was tested 29 April 2014 and worked with loopback cable.
 * (Loopback = pins 2 and 3 connected.)
 */

import processing.serial.*; // This is the serial communication features.

Serial myPort;   // Create object from Serial class
int ports;       // Number of ports in list of serial ports.
String inputStr; // Data received from the serial comm line
String titleStr; // via out serial port.
int cols = 8;    // For the display grid.
int rows = 8;    // For the display grid.
Cell[][] Panel;  // Cell is a special object that displays as a grid.
String[][] labelArray = 
  {
  {"1"," 9","17","25","33","41","49","57"},
  {"2","10","18","26","34","42","50","58"},
  {"3","11","19","27","35","43","51","59"},
  {"4","12","20","28","36","44","52","60"},
  {"5","13","21","29","37","45","53","61"},
  {"6","14","22","30","38","46","54","62"},
  {"7","15","23","31","39","47","55","63"},
  {"8","16","24","32","40","48","56","64"} 
  };
int[][] valueArray = 
  {
  {1, 9,17,25,33,41,49,57},
  {2,10,18,26,34,42,50,58},
  {3,11,19,27,35,43,51,59},
  {4,12,20,28,36,44,52,60},
  {5,13,21,29,37,45,53,61},
  {6,14,22,30,38,46,54,62},
  {7,15,23,31,39,47,55,63},
  {8,16,24,32,40,48,56,64},
  };
  int rate = 0;
  int evenToggle = 0;
  
void setup() 
{
  size(800, 500); //Initial window size.
  
  ports = Serial.list().length; // Find out if any ports are active.
  if (ports > 0) // If one is, assume it's the first one (index = 0).
  {
  String portName = Serial.list()[0];
  // I create an informational title string.
  titleStr = "# of ports = " + str(ports) + " :" + portName;
  myPort = new Serial(this, portName, 9600);
  myPort.bufferUntil('\n'); // '\n' means a linefeed in the C language.
  myPort.write("000"); 
  myPort.write('\n');
/* The above lines will initiate the first serial event if 
the serial line is connected as a loopback. */
  }
  else
  {titleStr = "No serial ports currently active.";}
  Panel = new Cell[cols][rows]; // This is called a "constructor."
}

void draw()
{
  background(255);             // Set background to white.
  fill(rate);                  // Fill color for update ticker.
  ellipse(750,25,40,40);       // Draw update ticker.
  fill(0);                     // Set fill to black.
  text(titleStr,2,2,700,20);   // Draw the title.
  
                                // Create the panel.  
  for (int i = 0; i < cols; i++) // For each column in Panel...
  {
    for (int j = 0; j < rows; j++) // create a row of cells. 
    {
      // This line initializes each object in turn.
      Panel[i][j] = new Cell(i*100,(j*50)+50,100,50,labelArray[i][j],str(valueArray[i][j]));
/* Cell Constructor syntax:
Cell(float posX, float posY, float width, float height, float angle) */
      Panel[i][j].display(); // Draws the panel a rectangle at a time.
    }
  }
  // I want an indicator to flash at the speed I'm updating the display.
  int nextRate = 0;
  if (rate == 0) { nextRate = 255; }
  else { nextRate = 0; }
  rate = nextRate;
}

/*
The serialEvent() method runs automatically whenever the buffer reaches 
the byte value set in the bufferUntil() method in setup().
This is the crucial code that responds when data are received.
*/
void serialEvent(Serial myPort) 
{ 
  inputStr = myPort.readStringUntil('\n'); 
  inputStr = trim(inputStr);  // Just in case it contains junk characters.
/* The int() method will convert a numeric string to a value. */
  int i = int(inputStr.substring(0,1)); 
  int j = int(inputStr.substring(1,2)); 
  String k = inputStr.substring(2);
  valueArray[i][j]= int(k); // Updates array contents - crucial!
/* I wanted to toggle the data that gets sent out so in a loopback 
test I could see it changing on the screen. */
  int nexToggle = 0;
  if ( evenToggle == 0 )
  { 
    myPort.write("000"); // Send a string to serve as a test and to ask for more data.
    nexToggle = 1;
  }
  else 
  { 
    myPort.write("001"); // Send a different string...  
    nexToggle = 0;
  }
  myPort.write('\n');
  evenToggle = nexToggle;
} 
// A Cell object is defined below:
class Cell 
{
// A cell object knows about its location in the grid as well as its size.
  float x,y;   // x,y location
  float w,h;   // width and height
  String label; // Cell "content"
  String value; // rest of cell content

  // Cell Constructor
  Cell(float tempX, float tempY, float tempW, float tempH, 
        String tempLabel, String tempValue) 
  {
    x = tempX;
    y = tempY;
    w = tempW;
    h = tempH;
    label = tempLabel;
    value = tempValue;
  } 
  void display() 
  {
    stroke(255); // Draws a black border.
    strokeWeight(2); // One of several border options.
    fill(204); // Fill color for the next object to be drawn.
    rect(x,y,w,h); // Gives us an array of boxes on the screen.
    fill(0); // Fill color for the text.
    text(label,x+2,y+2,w-4,h-29); 
// Above line draws text superimposed over the boxes.
    text(value,x+2,y+27,w-4,h-29);
  }
}

I didn’t capture quite the latest version of my code with the yellow and red logic in it, but this is plenty for now.

Voltage indicator

4 April 2014

This post is an experiment for me.
I don’t usually describe how I do my design work.
The objects, generally speaking, are not that photogenic, and electronics is a bit of a dry subject. But some people just aren’t familiar with it, and they should be. This is the age of electronics on earth.

most of my patch bay

My patch bay – right side.

Design opportunity and goal

While some electronics designers work within the framework of marketable consumer or industrial products, I don’t. It’s strictly “for fun” you might say. But any designer requires opportunities to do his or her work. After all, you can always buy OTS (off the shelf) if the item you want has already been designed.

I had made a “patch bay” – a kind of interconnection panel where lots of signal connections come together at the same place – for signals used to control my displays. I had purchased a blank piece of aluminum from a local welding shop, cut a slot down the middle (don’t ask me how) and drilled a bunch of holes in it for switches and connectors, then started loading it up with circuit boards.

But on the far left end I had four holes where nothing really seemed to fit: A design opportunity! I decided I wanted a voltage indicator that used four LEDs that got brighter as the monitored voltage got closer to each one’s center setting. The usual bar graph, of which I had made many using a commonly available part, uses ten LEDs that just go on when the input voltage goes above their set point, and off when it goes below. There is also a “dot mode,” which I like to use because it uses less power, where the LED whose set point is closest to the input voltage is the only one that goes on.

I didn’t want to use ten LEDs in the usual way. I wanted to use only four and have them get brighter and dimmer, the way my light panels are designed to do. I wanted each one a different color, but I only had three colors on hand, so the middle two are green, the top is white and the bottom is red. The red LEDs I have are a good deal less bright than the other colors, so I had to try to compensate for that, too.

patch bay left side

My patch bay, left side.

Dot display IC (integrated circuit)

I decided to use the dot display IC as the central component in this project. The two bottom outputs would go to the red LED. The next three to the lower green. The next three to the upper green, and the top two outputs to the white LED. You can set up the IC for so much current per output. Old LEDs required 20mA (milliamperes) to be bright. But modern LEDs only need 2. I tried limiting the current through the LEDs using series resistors. The brightest LED (white) would get a big series resistor (7K – kilohms) the green ones would get smaller ones (I think I used 1.5K) and the red would get the smallest series resistor, something like 100 ohms. These values were arrived at experimentally, and weren’t perfect, but good enough for this project.

How do you get an LED to get brighter and dimmer? You can simply drive it with more or less current. But almost exactly the same effect can be achieved by turning it on and off rapidly using a technique called “pulse width modulation” (PWM). This works because the body only takes a picture of its environment about 100 times a second. So any light flashing at about that rate or faster will appear constantly on. In technology, this is most commonly experienced when watching video monitors (or films). The picture on them only changes 30 to 70 times a second, but the motion appears continuous.

To do this with my dot display IC, I would have to make the input move back and forth through the set points of each of the dot outputs. I decided to use a “triangle wave” for this, and here it is:

triangle wave

This image is from my USB oscilloscope. There is a grid with the vertical and horizontal scales shown by the knobs. The period of this waveform is about 10mSec (milliseconds) and the amplitude is about 800mV (millivolts) peak-to-peak. So it’s oscillating at about 100 Hz (Hertz, cycles per second) and it’s about a volt high. The entire scale of my meter is 2.5 volts, so this signal should activate about 4 outputs at one time, with the one at the center of the oscillation the brightest.

I coupled this signal to an amplifier through a capacitor, then made the DC (direct current – not oscillating, or changing very slowly) level of the amplifier equal to half the input signal (0 to 5 volts). This created an input signal to the dot display IC of a triangle waveform going up or down depending on the slowly-changing DC level being measured, centered at zero to 2.5 volts, the input range of the dot display IC.

Does it work?

With the input set lower (see knob) the red LED is brighter than the lower green (by a little).

low input display

With the input set higher, the white LED is brighter than the top green.

high input display

The effect is quite noticeable, particularly to the eye (less to a camera). I was pretty happy with the outcome.

Limitations of measuring instruments

The range of voltages I use for my analog projects is zero to five volts, so that’s the only range my indicator needed to have. Since the electronics run on +7V and -5V, they can’t put out much more than 5 volts anyway.

But I noticed a funny thing happening with my USB oscilloscope when I didn’t connect it to my signal through a capacitor (to block the DC component of the signal).

clipped triangle wave

It was “clipping” off the top of the waveform! My cheap little USB oscilloscope only has a display range of plus and minus 5 volts! (at least at the settings I was using). This is a very small DC range for a professional oscilloscope, where more like plus and minus 50 volts is what is expected. This little scope had no DC offset built into the front end (all good scopes do) so if the signal goes beyond certain limits, it just disappears.

Here is a trace of the 12volt square wave that creates the triangle wave. Notice that it stops at a little under 5 volts. This means I will have to build a more compliant front end onto my scope if I want to see the entire waveforms in my 8-12volt projects.

clipped square wave

Comments?

I hope this post gives some small insight into the electronic design process. I kept it conceptual. The hardware details are VERY dry. You just look up the data sheets of the parts you decide to use and figure out how to connect the correct pins together. There are certain real-world considerations to take into account, such as using bypass capacitors on the supply pins so signals don’t get into the circuit in unexpected ways. And you have to know how to solder if you want to make a permanent circuit board. Solder is hot metal and it has stuff inside that smells pretty bad when it burns, so a lot of people don’t like it and I don’t blame them. It’s a great technology for military equipment, but hobbyists could probably get by with conductive glue.

Anyway, I rarely get real comments on this blog and would appreciate some. They don’t appear immediately; I have to go through them and approve or disapprove them.

Bye for now.

Spring News

31 March 2014

More photos of the tiny white roadside flowers!
They’re back! They are a crucifer, probably an alyssum that most would consider a weed. I took my camera out to “the vacant lot” on a brisk, sunny Sunday afternoon for these shots.

flowers look like snow

They look like snow on the ground from a distance…

drift of tiny white flowers

Get closer and you still can’t really tell..

mat of tiny white flowers

Yes, they are flowers!

huge field of tiny flowers

From an ant’s eye view, they look like a huge field!

flowers in gravel

Basalt gravel adds a little character.

defiant little flower

They defiantly grow where no plant has grown before!

Remote Viewing News

Speaking of defiant, Courtney Brown, who runs the Farsight Institute single-handed, has released his latest project, after much fanfare in an attempt to get more attention. This project concerns the building of the Great Pyramid of Giza. Yes, ETs and cloned rock miners appear to have been involved. The stones (up to 80 tons in weight) were hovered into place with the manual help of human devotees. The sessions include the data that another ET group came in and introduced monotheism to the area. The “magic” of the pyramids had evidently waned by that time, and the people, finally realizing they were free to leave the area, did in droves.

Courtney is convinced that data gained from Scientific Remote Viewing can change the planet for the better, but he has come to understand the grim realities of the situation: He has only two remote viewers he can rely on; the technology is dying out. You need a group to push a new technology forward, or it will die as an esoteric curiosity. Data of this variety is being pushed into the “alternative media” with the hope that it will never be picked up by the mainstream. The “intelligence” community seems very involved in this activity. They also work hard to discredit and/or ruin anyone who has something truly promising or revealing to offer. The strategy is to make the “alternative realities community” – also known as “New Agers” – look like a bunch of kooks so no one who wants to be known as “serious” or “legitimate” will touch them. Works pretty well most of the time.

One year on the Palouse as of end of January!

tiny flowers with bicycle

My bicycle celebrates its first year in service.

Microscopes

23 March 2014
microscope

American Optical “Spencer Sixty” lab microscope

When I was young I had a microscope. I didn’t use it very much. Just enough to see some little creatures swimming around in pond water, look at some insect parts, and things like that.

But when I saw a lab microscope last year at Palouse Treasures, being sold for a tenth of what it was worth, I had to get it. Now someone who really has a use for one has expressed an interest in it. So I thought I better take some photos of it and put up an article.

Known History of the Microscope

According to the historians, Dutch lens makers (for eyeglasses) were the first ones on earth to put together microscopes, back in the late 1500s. This may be true.

Antonie van Leeuwenhoek (1632–1723) is a famous name in microscopy, pioneering the use of this instrument as a research tool in biology.

As a Scientologist I am aware that all earth technologies had earlier versions elsewhere. The process here on earth has been one of re-familiarization, not “first art,” for the most part.

Optical microscopes served us well until the 1930s, when some electronics guys were able to throw together some instruments that magnified things much better than optical microscopes could. Meanwhile, optical lenses continue to be used for so many different purposes it would be difficult to list them all.

Parts of a Microscope

parts of a microscope

Parts of an optical microscope.

I don’t particularly want to get into a whole thing on optics here. The point was to just get some photos of a microscope up on my blog, with a few of the basic technical terms.

microscope business end

objectives, stage, focus knobs, lamp

Perhaps one of the more fascinating things about this instrument, and many others like it, is the solidity of its design and the obviously precision machining that went into many of its parts. In many modern machines, the technique that goes into their construction is mostly hidden under a cute or simply practical cover. Unless you open things up, you won’t notice all the precision parts that go into the things we use (I am thinking of computer disk drives). But with this microscope, the machined surfaces are right out there to look at.

Extending the perceptions

The microscope is an example of a long list of tools designed to extend human perception. The fact that we find ourselves in a situation where we must construct sophisticated machines to extend the abilities of our bodies (which are rather sophisticated biological machines in themselves) is quite ironic. We had – in theory at least – the full range of perceptions to start with. We ended up “inside” a very limiting body for reasons best left for researchers such as LRH to explain.

Only a very few people on earth are beginning to experience the range of perceptions that are available to a being when it operates exterior to a body. There have even been techniques developed to rehabilitate lost perceptual abilities, including the ability to sense things like magnetism and radio waves. I am very interested to see where this process of rehabilitation will take us!

Java – diving in

6 March 2014

What it takes to write a program – briefly?

Back when I was using DOS [the Disk Operating system sold with most PCs (personal computers)], there was a program included called QBasic. You ran the program and there was a window (a DOS window) where you could write your own little programs. Then you would run them from inside the QBasic program.

This was a very simple functionality for writing software. However, we still follow this fundamental pattern. The program you write software in is now called an IDE – Integrated Development Environment. You develop software by writing and editing code. An average biggish program will make use of many code libraries. These all have to be in places where the IDE can find them. As the functions implemented by your application become more complex, the connections between the various different parts become more numerous.

What does it take to write a program? I takes an IDE, or something like one.

Java

The Java language and approach was created in the 1990s by a computer scientist at Sun (Stanford University Network) Microsystems. By 2007 it had become completely open-source (all code freely available to the public). In 2009 Oracle, a huge software company, bought Sun with the promise to keep Java open source.

The Java approach was to create a language that would be the basis for programs that could run on any operating system. This language is VERY widely used. Its users include huge companies like Boeing, governments, the military, robotics competitions and programming hobbyists.

NetBeans

NetBeans is Oracle’s IDE for Java. It started as a student programming project in Prague (a beautiful city in central Europe). It was purchased by Sun in 1999, and was made open-source soon after that.

One reason it is called NetBeans is because Java is very widely used to create applications that run over networks. Network applications are more complicated than desktop applications because they require communication between computers and sharing resources among multiple users. Of course, Java can also be use to create desktop applications.

Here is a screenshot of a sample NetBeans project:

netbeans example

This shows two views of the same project. One view shows the actual folder structure of the project, and the other shows the project in a way that should assist a developer to work on it.

Note that the number of different parts that make up this “simple” project is quite large. This is rather daunting for the beginner!

What I wanted to do

Years ago I learned that a game controller, usually called a “joystick” after the control stick used in helicopters and jets (a rather base play on words – common among pilots), was extremely simple to make. It seemed like an ideal way to add some hardware knobs to any sort of control application. I wanted to have a piece of code that would allow me to use human-controlled joystick positions in my software applications.

In the “old days” of DOS, this wasn’t too hard to do. You could write commands that took data directly from the computer’s hardware interface.

But “modern” computers, in an attempt to become much more versatile, no longer access hardware directly, but communicate to the hardware through “drivers” that are little pieces of software that make some particular piece of hardware look to the operating system like a generalized, or generic, piece of hardware. So the operating system only has to worry about “printers” and “keyboards” and “game controllers” instead of all the different specific models that exist. And the hardware manufacturer is responsible for providing drivers for different operating systems that they want their hardware to work with.

Windows, in particular, has been through a lot of changes in how its hardware drivers work. This is partly because it is trying to anticipate future hardware innovations and make operating systems that will be compatible with them.

Thus, talking to an old-fashioned DOS joystick on a Windows computer is now basically impossible. You need an intermediate piece of hardware (thankfully not too expensive) to make the “legacy” joystick look like a USB game controller. Then you can choose one of several ways of talking to the USB game controller — your joystick.

I was not getting anywhere finding code examples that worked in my Microsoft IDE (Visual Studio – I learned to use it at Seattle Central Community College), so I thought I might try Java.

My first choice for a Java IDE was Eclispe. This is an open-source IDE developed by IBM. It is about 10 years younger than Java and is in fact written in Java. I had heard good things about it including the fact that it is very versatile through the use of feature “plug-ins.”

Here is a screenshot of just a portion of the application. It is really very similar to other IDEs. However, the best code examples I could find were developed using NetBeans. Each IDE uses its own internal folder structure. So you can’t really take a NetBeans Java project and just copy it over to Eclipse and have it work fine.

eclipse-example

Success!

If you have a USB joystick, on Windows 7 you can go to the Control Panel, choose Devices and Printers, and you should find listed your game controller (if it’s plugged in). You can right click it, select “…settings” and then click the Properties button. It should bring up a little window that graphically shows the joystick, sliders and buttons on the game controller, and the graphic will change as you move the controls or press the buttons. This is exactly what the code I found implements using Java. It’s a very interesting piece of code, and it is comprised of (count them!) three major parts and about 15 different functions. That doesn’t count all the stuff that Java takes care of for you. So this function is not as simple as I’d like it to be, but at least I finally have some code I can look at. (This is available in a zip file called JInputJoystickTestV2.zip from http://theuzo007.wordpress.com/2013/10/26/joystick-in-java-with-jinput-v2/ .)

More on project folders

It took me a while to learn to use folders to organize my code projects – even the ones I did without a real IDE (I learned to create PHP applications without using an IDE). I finally decided on a standard folder structure for my PHP projects, and it has helped me to “throw together” an idea, because I can just start by copying a similar project into a new folder.

Below is a little illustration of someone’s website folders. The “eng” stands for “English.” The other folders are similar to the ones I use. One for HTML pages, which may be “static” or contain code in them. One for images. A website can have a LOT of images! One for styles, which are files written in a language called CSS – Cascading Style Sheets – that describe how a website should look, but contain no content. And one for “js” – JavaScripts. JavaScripts are not really related to Java, and are a little controversial. They are basically little programs that download with a web page and run in your browser. They can therefore potentially do bad things to your computer. They are supposed to only do things to your web page, though, and now most browsers are built in a way to help ensure that JavaScripts only operate on the document being displayed. Still, I don’t like to use them. I prefer to rely on built-in browser functionality to do things on a web page.

And with that little digression, goodbye for today!

website-example