text:
I can’t run the NXT 1.0 program software on my Mac version 10.6
How do I fix this? I run the install program, restart my computer, go to the “Applications” folder and there is a folder named “LEGO MINDSTORMS NXT”. I open the folder and there are three “options”: a folder named “engine”, a ".ini" file, and a “uninstall” file. I’ve browsed the “engine” folder and it’s full of ".ini” files. The “uninstall” file is a text file.
I don’t have any idea of what to do next. Please help!

You can get the Mindstroms NXT 2.0 software from here. It will run on newer versions of OS X.


text:
Use iPhone camera as an input sensor for EV3
As EV3 has Bluetooth builtin as well as iPhone too, is there a way to connect them somehow so that iPhone could send data from the camera via Bluetooth to an EV3 brick?
As a more general question, can I make iPhone send/receive data to/from the brick via Bluetooth, e.g. commands, with Objective C or other ways?

I haven't come across any existing projects like this yet, but there is nothing stopping you from doing this yourself. I would suggest writing an app for your phone in Obj-C and just remote controlling the EV3 via bluetooth.
The bluetooth communication uses the RFCOMM profile. This post might give you some hints on getting the bluetooth connection.
You can find the EV3 communication protocol specifications in the hardware developers kit that is linked in this blog post.
Hopefully this is is enough to get you started.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

sort: votes


text:
How to remember initial position of a robot and return to it
I have an EV3 robot with motors, like a car, that can move forward/backward and left/right and have some sensors attached. I want it to remember its initial position by remembering all the movements of motors when robot starts moving, then after some movements, that can be random in time, distance and direction, I want to return it back home.
How can I do this? What is the principle of returning "home" knowing there are no GPS or other helpers?

You have two options.
You can use an accelerometer. Lego sells one that can be found here. There are also aftermarket ones at mindsensors.com.  This allows you to independently measure the acceleration of the robot. You have to then integrate this information twice to get positional change. The way to do this is to put it in your control loop and sum up 0.5*dt*dt*a where a is the accelerometer reading (there will be one for each axis of motion) and dt is the time between samples. This nice thing about this is it gives you absolute displacement. That is it accounts for motions that cancel out so you can set a straight line path back.
You can record each displacement into a variable for x and y directions using the servo readings from the motors - remember to reset the encoder value from the servos after each reading. This is harder because you have to account for the geometry of the wheels and keep track of the robot heading - lego also sells a compass sensor if you don't want to deal with finding your heading, but you'll still have to deal with non-spinning turns. It's also prone to accumulation of errors. (the accelerometer is too but not as bad I think.)
Your admonition of 'no other helpers' could be interpreted to mean you don't want the first solution in which case you are left with using the encoders and figuring out the differential motion of your chassis design (which may be non trivial).

Get the initial position of an EV3 Motor and return to it.
Setup:  I installed Debian Linux on the Mindstorms EV3 brick and I'm using Python 2 to use the ev3.lego package to use the method: run_position_limited(... , ...) to spin the motor to a certain angle position.
Python 2 code: which gets the initial position of the Motor on program start:
from ev3.lego import Motor
c = Motor(port = Motor.PORT.C)

initialMotorLocation= c.read_value("position")
c.run_position_limited(
    position_sp = int(initialMotorLocation) + 150,
    speed_sp = 150)

What it does
First we import the Motor library from ev3.lego.  Then we instantiate a new connection to the Motor on Port C.  Then we read the current position of the angle of the motor on start.  Store this value permanently so every time we want to move ahead by 150, we add that value to the location it was at start.
Result:
If you run this python program many times, the motor will rotate forward by exactly 150 each time, rather than the default behavior: "rotating to exactly position 150", which only holds true until the EV3 brick is rebooted."
What did we learn:
We need to learn to read and comprehend the source code ev3.lego documention, Defined here: https://github.com/topikachu/python-ev3
If you scroll down that page you see this command:
from ev3.lego import MediumMotor
d = MediumMotor()
d.reset()

So the method called reset is an additional way to cause the motor to reset it's internal tachometer to 0 at the current location.
Full Example:
from ev3.lego import Motor
c = Motor(port = Motor.PORT.C)
c.reset()  #Set the internal tachometer back to 0
c.run_position_limited(position_sp = 150, speed_sp = 150)

How to get to these answers on your own:
You got told that the reset() and read_value methods will solve your problem.  This is not an example of you finding things out for yourself.
Go to the source code: https://github.com/topikachu/python-ev3
Under python-ev3/ev3/ev3dev.py you'll see the source code that does the work I've explained above.  Notice the properties.  You see the integer value called position that you were querying above.
Being able to recompile and understand how the library is working from source is the better part of the education the mindstorms EV3 brick aims to teach you.  Dig in.

You should look up 'Dead Reckoning'.  It is a method where you always know (or guess) your current position by tracking all your previous moves.  Knowing your current position, you can then retrace your steps backward or reach any position back calculating a straight line to it (hoping that there's nothing in the way).
Here's the Wikipedia on the subject: Dead reckoning

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Can Mindstorms EV3 communicate using protocol 802.15.4?
My aim is to make the robot communicate using protocol 802.15.4 through a USB dongle 802.15.4 over 6LoWPAN.
The robot has to be able to get information from TelosB.
I wonder whether this possibility has already been tested and if it is possible to make it work and of course how?

This can be done using ev3dev.
https://github.com/ev3dev/ev3dev/issues/46


text:
Is it possible to change the OS in the EV3 Mindstorm Brick
I'd like to know how to change the OS embedded into the EV3 mindstorm Brick ( list of it ).
For example, would it be possible to replace the existing one by a linux release without losing any functionality ?
I want to to use an OS supporting all the Robot EV3 functionalities and also the 802.15.4 protocol.

See also Is it safe to try different firmwares on EV3

This can usually be achieved on the EV3 with a bootable SD card - you would set that up with a new firmware image and a loader that copies it across to the brick.
The leJOS team have ported their codebase to the EV3 - so with a bootable SD card you can indeed load a modified version of the firmware onto your EV3 brick.
You can then use their WiFi stack to communicate with your brick via a USB dongle - whether they support 802.15.4 yet (or ever will) I couldn't say.

The WiFi stack is loaded to allow connection to the EV3 via a supported USB WiFi adaptor. This allows you to connect to the EV3 via Telnet, SSH and NFS and makes program development very simple.

I am working on a project called ev3dev that runs Debian on the EV3. We are not quite to the point that we support "all the Robot EV3 functionalities", but we are getting very close. We are also using a version 3.3.0 Linux kernel, which is more up to date than the other EV3 firmware projects that I know of (which use a 2.6.33 kernel). If you would like to propose that we add 802.15.4 support, just create a new issue. We welcome anyone who who would like to contribute.

Thanks for your kind answer, David. I have followed your suggestion and have submitted an issue for the 802.15.4 protocole support

Could you please specify shat do ou mean when you say that you "We are not quite to the point that we support "all the Robot EV3 functionalities"? What functionalities are missing at this time? Is there any work around? Could you please let me know if it will be show stopper for me?
Thanks in advance,

We are not quite to the point that we support "all the Robot EV3 functionalities"

means that we are pretty much re-writing the drivers from the ground up. We are getting ready to do a release soon (week or two maybe) that will allow you to use most sensors. Motor support is still in development, but we will have minimal support at least. You can have a look at the wiki at the link I provided to see how to use everything.

Hello David,
I've seen that you have updated the motor’s functionality and I am wondering if you could let me know which release I should download and experiment to be able to use this motor.
Thanks in advance for your answer

My latest release is here, although it does not have Ralph's latest motor driver changes yet. It does have basic motor control though. If you have any more questions about ev3dev, just post a new issue on github.


text:
Where can I download the EV3 education edition software for free?
I have a site license but I'm not able to find the download for the software anywhere. Any help would be greatly appreciated.

I think it's strange how this guy asks a question and then never comes back to check for three years. But FYI, you should see the download somewhere here: https://education.lego.com/en-us/downloads/mindstorms-ev3/software

According to an education Community Manager you should have received a link when you purchased the licence.
If you didn't receive one you should contact your reseller - it depends on which region you are in as to whether logging in to the LEGO education site would enable a direct link for you.

https://education.lego.com/en-us/support
You have to be logged in with your credentials, then click the download button.

As of January 1, 2016 you no longer have to have an activation key to download the software. Source: https://www.facebook.com/groups/legomindstorms/permalink/578017979013099/

The software for the LEGO Education version of the EV3 needs a license (either a single license or a site license). AFAIK, all EV3 Education purchases come with a Software License, which also includes instructions on where to download the software.
There is nothing preventing you from using the retail (non-Education) version of the software though, which is a free download from http://www.lego.com/en-us/mindstorms/downloads/download-software. It might prompt you to update the firmware on your EV3 to the "Home" version (currently v1.09H) but you can always switch back to the "Education" version (currently v1.09E).

Yep, looks like they've changed the sales model since this was last asked - as the UK Education shop now offers sets with Software, as either a "1 set" or in multiples for 2, 8, 16 or 30 pupils - there doesn't seem to be distinction between single or site licenses any more - possibly due to the tablet based tooling.

Please try this link and choose the software you want
http://www.lego.com/en-us/mindstorms/downloads/software/ddsoftwaredownload/

Hi Calin - that's the "home edition" unfortunately, which doesn't have the data logging and other capabilities of the Education edition.

If not yet had a license: Try download at this site but it will cost you RM2120 (if you're rich)...: http://lego.sasbadi.com/product-details.php?id=46&type=robotics&iframe=true&width=900&height=510
If already bought: Just follow the link at the license and enter the codes!(might need to make an account for the web)

Is it an official reseller?

You can download the Education Edition for the LEGO Mindstorms EV3 here (footer of the page). It is available for free.
You only need a valid LEGO ID for a login. If you haven't a LEGO ID you can create one on the linked page.


text:
RGB sensor HOWTO use?
I've got an RGB sensor (this one with the three LED thingies) and wonder how to access it using NXC.
I know I can SetSensorColorFull(IN_1); and then access it using ReadSensorColorEx or, for simplicity, ReadSensorColorRaw, but I'm a bit stumped wrt. the return values.
I know normal 24-bit (3x8bit) RGB colour codes. I know normal NXC return values (0/1, 0‥100, 0‥255). But I don't know how the values here work.
I've toyed around with i = ReadSensorColorRaw(IN_1, r); where unsigned int r[4];, and got values: i was always 1 (even if the cable was unplugged), and the r[INPUT_RED] aka r[0] values were somewhat usable, and about 0‥60 were black in general, and I got up to 1023 (when holding the sensor towards light), but if I hold the RGB sensor towards anything yellow, green or blue, the values are somewhat off. Also, I found no docs whatsoever as to what r[INPUT_BLANK] is supposed to be.
When unplugging the sensor, I got r = { x, 0, x, 0 } (where x was roughly 120) in my test program just using NumOut to debug the sensors, so I assume that the sensor return values are biased somewhat?
Would using ReadSensorColorEx give somewhat better usable values, or anything else I can use? Do I need to calibrate them first, and if yes, how? To clarify, I don't want the functions that just give back “it's red”, “it's green”, etc. but I want somewhat usable R/G/B colour tuples (and would take Intensity as bonus, although I'm using light sensors for them normally, or SetSensorColorRed if must be).
I'm using NXT Firmware 1.29, and exclusively Open Source tools. If there's anything else needed, information wise, just comment.

To understand how to use the data, it help to understand how the color sensor works. Let's take a step back for a minute and have a look. The sensitive electrical component here is just a photodiode or phototransistor that lets us measure light intensity.
If we turn all of the LEDs off we are just measuring ambient light. If we turn on just one of the LEDs and hold the sensor close to a surface, we are measuring mostly the reflected light from that one LED (and some ambient light).
When we switch to color mode, it looks like all 3 LEDs are on at the same time, but what is actually happening is that they are being switched in sequence very rapidly. off-red-green-blue-off-red-green-blue-... and so on.
This means the mysterious 4th value, INPUT_BLANK, is the off part of the cycle - it is just measuring ambient light.
You said that you would take intensity as a bonus, but actually that is all you are getting. If you hold the sensor close to a white surface, you should get high values for all 3 colors. If you move the sensor even closer (but not too close), the values will increase. This is because the reflected intensity is getting strong, not because the surface is getting whiter.
This means the RGB values are not like the ones on your computer screen. If you do a web search for robotic vision systems, you will find that RGB just doesn't work. The common practice is to convert the values to HSV (hue-saturation-value). The HSV values can more easily deal with changes in ambient light allowing you to more accurately determine colors.
I am not sure how the normalized and scaled values are calculated in ReadSensorColorEx, but you can play around with them and see if they give you better results for whatever it is that you are trying to do.

Thanks for this enlightening explanation. Do you have any references for this, so we can read deeper if needed? Also, do you know of any example program using the RGB sensor in full mode?

Sure. I learned most of this by reading the source code for the EV3. The timing happens in the d_analog device driver. I haven't got to the part where it actually computes the colors though. It's in there somewhere.

For an example, have a look at the Mindcuber source code. It does it's own figuring of colors by converting them to HSV and then sorting them.

Thanks. I will accept this as answer (feel free to move those comments into the answer body), even though the Mindcuber source is not Open Source it’s enough to read it to write a documentation for the sensor.


text:
Personal part collection on the web (Bricklink or alternative)
I started using Brinklink a few months ago and although I like it, the interface is quite terrible. I'm looking for a specific feature but don't know if it's unsupported or just I cannot find it.
How can I create my personal parts collection on Bricklink, something like a catalog of parts that I have? Other options I require would be adding parts from whole sets and adding bricks from my placed orders.
If this cannot be done please suggest alternative websites or even desktop applications that can do this?

An alternative to using BrickLink for those purposes would be http://rebrickable.com. I personally find the interface to have some warts, but definitely better than BrickLink in a lot of ways. In particular to your requested features it does support importing parts from sets (Look for the "Add to my Parts (Part out set)" link on any set description page) as well as importing from Bricklink Orders in XML format and a few other sources. If your long term plans involve selling some of those parts on BrickLink it also supports a decent set of export options that can help out with that as well.

Brickset.com has a feature that I can't yet see on rebrickable, a way to easily get a list of "Not Owned" sets here: http://brickset.com/mycollection/sets Plus, you can change the format of the set lists.

The specific reason that I didn't mention Brickset is that while it has really excellent set collection features it has no real capacity for general part management. The question explicitly asks about parts management which would seem to disqualify Brickset then. Thanks for mentioning it though.

Ah yes... good point. I sure wish Peeron was still up to date. It's weird.. every time I go there new stuff has been added... though now the last added is from 1 January. So sad.

Thank you for the answers. I do use Brickset sometimes, I added the sets I own and update this list often but haven't used any of the other features and couldn't find some sort of part catalogue there. Because essentially what I need is to keep a list of single bricks I got from Bricklink or some lots. Rebrickable seems promising, I have visited that site few times but didn't have a clue it has this feature. Will check in detail when I get home so this will probably be accepted answer.

@gev - I had completely forgotten that Peeron had parts inventory management! I haven't seen anything official but it seems like they are doing inventory updates quarterly these days. Rebrickable does appear to be updated more regularly but perhaps you could add another answer with Peeron as an option?

I will check out Peeron too on the weekend (even thou it looks like someones first HTML test from the 90s), thank you for the suggestion.

It appears rebrickable is usable for what I needed, thus this answer is accepted. Although there are some options missing but I haven't had the time to inspect whole website in depth so I might have missed them.

The easiest way to achieve what you want to is register as a seller. You don't have to sell anything (you could keep your store open but empty, or you could just keep your store closed).
Once you have a seller account you can manage two stockrooms: A and B. If you do have some sets/parts you are planning to sell and want to have an active store, you can keep those items in stockroom A, and you can keep your own personal collection in stockroom B, which is invisible to buyers, even if your shop is open.
This way you can easily manage your collection, automatically keep track of how much it is worth, and also, if you decide to sell, all you have to do is move the items from stockroom B to stockroom A, open your shop and you are done. ;)

Perhaps you could expand the answer by explaining to OP how to register as a seller? The question seems to stem from this lack of understanding.

Thank you for the info. I did think about this as a possible solution, but then again I thought that registering as a seller would require some pay-pal or bank account or more personal data. So the first comment is totally in place. Am I wrong about these, what are the requirements to register as a seller?

I went looking this morning and you start the registration from http://www.bricklink.com/regCountry.asp?a=SN where you select your country. The next page has quite a lot of information to input, but does not actually require that you input any financial information immediately. I set up my store a long time ago so cannot proceed on that form, and the help files don't have enough detail so it is unclear when or if you have to register your PayPal account or if that prevents entering inventory.

I will check this option too although if it requires paypal to accept payments that will be a problem because only paying via paypal is supported in my country.

@PSIXO - As I'm already registered I can't go back to the registration screen, but BrickLink doesn't take any of your financial information. BrickLink is operated completely separately from PayPal or other payment methods. It is up to you, as a seller, to choose your payment options later, and even then you will have to send out invoices manually, or instruct the buyer how to pay through their chosen payment method. So the point is you don't need to give BrickLink any sensitive information.

Thank you for the info. I didn't have the time to test out the Bricklink "Hidden Seller" approach but based on what you say I guess things a was considered whit would not be a problem.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
How to minimize the impact of erroneous sensor readings?
A group including myself are using the Lego Mindstorm kit to design a robot that is going to compete in a school competition.  However, the sensors aren't as reliable as we would like them to be, particularly the ultrasonic sensor, which is what we're using to judge how far away objects are from our robot.  The problem that we face is that every so often the sensor returns a value that is just wrong: in a set of 3 datapoints for an object that is 45 units away, we'd possibly get values like 45, 45, and then 186.  The erroneous values are not consistent, nor is the amount by which the error occurs.  We also can't judge the probability of an erroneous value occurring.  Our current algorithm takes the average of a small number (i.e. 3) of datapoints, but we've realized that if the number of datapoints is small, then the average could be distorted greatly by erroneous values.  If the number of datapoints is large, then it takes a long time for the robot to get all of the sensor readings.
What do you recommend as a process to reduce the impact of erroneous sensor readings?
I'm sorry if I'm posting this question in the wrong location, but this problem seemed more closely linked to mathematics than to programming.

Might as well use Kalman filters.

Are the items you're tracking moving at all (i.e. other robots) or are they static? If they are static you could just discard the results based on your current speed and previous changes in distance...

What is essentially happening with the robots is that we're using them to locate small, scattered, stationary canisters which we then need to capture and move to a corner of the 'field.' Consequently, the current algorithm is to basically move to somewhere in the center, rotate and take samples (non-continuous, btw) of the distances it sees, and then try to go for the best choice. Consequently, the objects that I'm trying to find are static (though there is another robot on the field at the time). However, the robot is not moving at the time either. We just want to reduce the error we get.

I have quite some experience in Lego Mindstorms and I can tell you that their ultrasonic sensor is extremely inaccurate as you described - from what I read online, the ultrasonic rays travel in a V shaped path instead of in a straight line (it causes readings not to be linear with distance). Detecting an object with a round surface makes it worse, because the ultrasonic rays end up scattering all over the place.
What we (my team and I did) tried to do was to cover up half of each of the sensor's emitting and receiving outlet hole so as to force the ultrasonic rays to travel in straight lines. We also tried taking averages, root mean squares, differentials, integrals and what not of samples instead - but both did little to solve the problem, especially when sensing across distances that are far away (> 100 cm).
We ended up switching to one of Mindsensors' laser based distance sensors.

Thanks for the info!  We don't have one of the laser-based distance sensors, so I guess we're outta luck.  We might try what @TZakrevskiy recommended.  I'd vote up for your solution, but I don't quite have enough reputation.


text:
EV3 Block problems?
I don't see what is wrong with the way i made my program.
It looks like this.

The idea is that in the while loop [01] shall the robot move forward until it see something brown.
If it see something brown it should jump to the second while loop, where it will move forward it sees something brown,  and if it sees something white it should move backwards.
But for some reason  it immediately goes to the second while loop, and stays only at the first for few sec.? ??
What am i doing wrong??

Nothing is halting the "02" loop.  It is running forever.
The problem with the second loop is that "brown" is the default.  The switch looks for "white" and anything else uses the "brown" side of the switch.  I suspect you want the lower half of the switch statement to be "any color but brown".  If so, the "default" button needs to be selected for the "white" switch choice.
As for the "01" loop, the content of the loop always runs a first time.  If at the end of one rotation, the color sensor does not see "white" it jumps out of the loop and the program enters the "02" loop.
I'd recommend using the LCD block to write the results of color sensor measurements to the EV3 LCD.  It's a basic tool for debugging.


text:
What techniques can be used for laying plates at 45° angle?
I've seen a number of techniques for laying individual elements at 45° angles, but I need a consistent method for laying down larger plates at 45 degrees while maintaining close contact with the base plate layer below it.
What techniques are available to achieve this?

http://brickfanatics.co.uk/pythagorean-theorem-in-lego/

I've un-deleted this question because I believe others may benefit or wish to add to this question. If you have discovered a solution, feel free to add it as an answer to this question.

I did come up with some solutions, but trying to come up with mathematically ways of scaling it to larger baseplates is where I am getting stuck.

All the techniques described above have one fault or another so have you tried to just get rid of the base altogether?
I did that a couple of times when I needed to make angular walls and it works seamlessly provided you use some pieces from other brands because Lego doesn't make them.

45° angles are tricky because of the dimensions of 45-45-90 triangles:

The fact that the hypotenuse needs to be a multiple of radical two makes it difficult to build out of LEGO plates which are generally limited to integers or halves. The best you can do in a reasonably small amount of space is a 5 x 5 x 7.07 triangle, but that doesn't come close enough to work well.
I'm not aware of a way to do this using just plates, but if you are willing to use other bricks as well, there are some ways. For example, some older bricks and most transparent bricks don't include tubes within the bricks. This allows constructions that are not limited  by whole numbers:

Edit: There is now a specialized 45° angle plate (15706) that can be used for this purpose:

Hinges can work, I have used this technique before, if you sandwich the hinges between two plates you get 45 degree 'bricks' that are quite solid.
In most cases, tiles and plates in the right place will keep sufficient contact with the base plate to have a stable model.

It appears that some LEGO pieces are designed with the proportions of 45-degree right triangles in mind. For example, the 3x3 plate with one corner removed has a diagonal edge that is very close to three studs long, as can be seen in this construction:

Likewise, the 8x8 corner plate has a diagonal edge that is very close to 10 studs long:

This is in old question but I think many people find this helpful.
I accidentally found this Lego technique where you put a 4x4 round plate between four 1x1 round plates. You can see in the picture how to do it exactly.
I think it is an "illegal" Lego technique. If you look closely you can notice that the distance between each 1x1 plate is a tiny bit more than four studs. And the cutouts on the side of the 4x4 round plate are designed for the normal four studs apart in my opinion.
The turntable is just there so it doesn't come apart, but the 4x4 plate is fully locked by the four 1x1 plates themselves. It may look like it doesn't work but just try it out.

If near enough is good enough you could build based on a 3:4:5 right angled triangle: i.e. put "dots" on the base plate 3 up and 4 across from each other which would then connect to the circles underneath a baseplate 5 holes apart.
The angle would then be ~37 degrees or ~53 degrees between the two structures.

Possibly I’m the same Woody that previously answered this question.  If so, I didn’t describe it well 5 years ago.
This is a cut down version of the 7/7/10 triangle which is
slightly better than the 5/5/7 triangle.

Distance between two round plates is very close to allow 6 stud plate here, but unfortunately it is slightly shorter.

Placing dots (1x1 round plates) on the bottom of one plate with 5 spaces in between will line up perfectly on a lower plate 4.5 down and 4.5 across (one dot fitting between studs on lower plate)

Can you include some pictures to show what you're talking about here?

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Identify these (Technic Steering) parts?
These three parts do not have part numbers on them, but it is clear they are LEGO parts (they have LEGO printed on them).  I am trying to track down the set that these belong to, or at least a part number.  Any help would be appreciated.

These parts were used for steering in many Technic sets between 1988 and 2001. They are the following parts:

Technic Steering Gear Holder (2790)
Technic Steering Rack (2791)
Technic Steering Top (2792)

Here's an example of how they can be used together for steering from set 8022:

Here's a listing from bricklink for the rack for which sets it was in.
http://www.bricklink.com/catalogItemIn.asp?P=2791&in=S
Part numbers can be used for the other items.


text:
Are there any additional robo center downloads for the nxt-g software?
It would be nice if there were additional entries under the animals, vehicles, machines and humanoid tabs. Supposedly there was some official LEGO web component to the software which appears to be gone with the introduction of the EV3. IS there somewhere to find content from that site?

Are you asking what happened to the NXT software robot plans? The ones that were animals, humans, machines, or vehicles?  One my pc, there is one animal, a scorpion.  It is located at file:///C:/Program%20Files%20(x86)/LEGO%20Software/LEGO%20MINDSTORMS%20NXT/engine/EditorVIs/Academy%20Content/activities/animals/scorpion/01/slide-inst.html

Yes. That sort of thing. I figured there would be more available. However I haven't been able to find any.


text:
How can I use multiple switch options in Lego Mindstorms EV3 software?
What I see is just a simple if/then/else. What I am looking for is to be able to add multiple options, more than yes/no.
I use a motor as a switcher, so I rotate it to some position and measure its degrees to switch the mode of the robot and there are going to be more than 2 modes, like 4-8. How can I do it in an elegant way?

I just discovered this a few days ago. If you use "Numeric" as the input type and switch to tabbed view, you can have a select/case/default type instruction instead of if/then. It also works with text input as well as as some sensors.

I would suggest stacking your switch statements by placing switch statements into one another like in the below image. Make sure your conditions overlap, so you are only testing for values in A1 and A2 that are WITHIN your A condition, same for B.

Yes, multiple switch statements can be nested inside each other.
However, given the problem of a measuring a motor's rotation and converting that into a user choice doing the math first and using that result in a single switch statement is possible.
Also, the logic will need to run more than once and give the user some indication of the current selection.  That much, might look like this:

It depends on what problem you're trying to solve.  If you need a large, multi-part switch statement, then Sergei's answer above is genius and definitely correct.  I just discovered that the first if counts as the default.  This is different than C or Java where the default condition is optionally coded at the bottom of a switch statement.  The only time nested if statements make sense is if it creates clarity within the program.  I'd much rather look at one large switch block with all of the cases listed than to see it broken up with multiple if/else blocks. i.e.
if
else if
else if
else if
else

looks a lot more clear than a messy bunch of nested if/else statements.


text:
Can you identify this model of a yellow truck?
It's part of a series of models I had as a kid that I want to take apart for my own kids now, and I'm looking for the original instructions.
Can you identify this one?

This model is built from set 8062-1: Universal Set with Storage Case.
Inventory and building instructions are available here.

Perfect! Thanks a lot! Do you have any tricks or dedicated search engine to identify them, or do you just remember?

From the size and style of the model, I felt it could be a model from one universal box. A quick browse in the proper section of peeron database gave the answer... Other useful databases are Brickset http://brickset.com/ (among other things it lists official building instructions from modern sets) and Bricklink http://www.bricklink.com/. Old building instructions are available here too: http://www.brickfactory.info/


text:
Can you identify this yellow crane?
Can you identify this one?
It's part of a series of models I had as a kid that I want to take apart for my own kids now, and I'm looking for the original instructions.

Looks like it is this Universal Set with Flex System. Looks like the instructions can be had fairly cheaply.

Set 8074 confirmed. Inventory and building instructions available here: http://peeron.com/inv/sets/8074-1

Don't pay for instructions until you check this site: http://lego.brickinstructions.com
They have a lot of PDF files of instructions listed for free.

Thanks. I’ve always used http://bricks.argz.com to find all the instructions I needed as PDFs.


text:
Older sets in The Lego Movie?
Are there any existing/hisorical complete sets (for example: buildings, vehicles, etc) featured in The Lego Movie? Sets created specifically for the movie do not count. For example, the bad cop's grandparent's house looks awfully familiar but I couldn't place whether that is an exact set that already exists, or just in the style of some of the older vacation/holiday house sets.

The Toa Mata from BIONICLE briefly appear in the film when Wyldstyle
  is talking to Emmet about the prophecy. So do Fabuland, 9448 Samurai
  Mech from Ninjago, 3189 Heartlake Stables from Friends, 8158 Speed
  Racer & Snake Oiler from Speed Racer, along with a few other themes.
  Some stopmotion videos created by fans on ReBrick were featured in the
  movie.

Brickipedia: The LEGO Movie
The car Emmet drives at the beginning of the movie is a slightly modified version of the 3177 Small Car.

Yes! Well, it depends... When you say featured, do you mean "it appears in the movie" or "it plays a central role in the movie"? If the former, many of them appear in "real life" scenes of the basement.
One of my favorite sets from my childhood was in one of the background dioramas. I got to see the complete basement movie set at LEGOLand California last week. They filled the film with old sets.

Appears in the movie as background scenery could count :)

FYI, 6339 also appeared in Stargate SG-1 season 1 episode Cold Lazarus. You can see it in this screencap.


text:
Emmet's couch model in official sets different than the movie?
Lego's official building instructions for The Sea Cow set include building instructions for building Emmet's couch from The Lego Movie. Are there differences between this model and the one actually featured in the movie? The one in this set looks different to me. Like, for example, this set has studs on some of the cushions to help minifigures stay seated, but in the movie the couch didn't have studs. Are there other differences as well? Any really major ones?

There are several discrepancies between the double-decker couch featured in The Sea Cow set and that depicted in the LEGO Movie. I've recreated the movie version as best I could in LDD and LDraw, and have compared it side-by-side with the Sea Cow set version. In the first picture, the Sea Cow set version is on the left, and the movie version is on the right, and vice-versa in the second picture. The notable differences are as follows:

As you pointed out, some of the seats in the Sea Cow version have studs on them so that minifigures will stay on better. Notice also that the Sea Cow version has one layer of blue plates, whereas the movie version has two layers.
The armrests are different. The parts that the two different armrests share have different color selections, and the Sea Cow counterparts are thicker and higher up than the movie counter parts. Also, the Sea Cow armrests contain the supports for the ladders, whereas the supports for the ladders are located elsewhere on the movie version.
The ladders in the Sea Cow version are higher up than the movie version.
There are round 1x1 studs placed on the bottom of the upper level of the movie version, but none are found on that of the Sea Cow version.

The back rests have more layers of plates in the Sea Cow set version than in the movie version.
The 1x2 plates with bars in the Sea Cow set version are used to connect the back rests with their corresponding seats, whereas in the movie version, they are not connected to anything. Because of this, the seats on the upper level are simply suspended in midair, and the back rests of the lower level are just sitting there with nothing attaching them to the seats. This is why replicating the movie version 100% and keeping it together is physically impossible. Why the makers of The LEGO Movie didn't simply attach plates with clips to those plates with bars they have there is beyond me.
In the Sea Cow set version, the two levels are connected by technic tubes which connect to 2x2 plates with holes. The two levels of the movie version are connected by long cylindrical 1x1 columns.

You can get this as its own set now: 70818 Double-Decker Couch which includes enough minifigs to fill it up too.

We built this set before seeing the movie and puzzled over what it could mean.  It appears very similar to the design in the The Sea Cow and HaydenStudios' excellent rendition.


text:
What software was used to create the LEGO Movie?
So I've just seen the LEGO Movie and I was amazed at the such intricate details of all the minifigures and sets.
I was wondering if anyone knows what software was used to create the film. Animal Logic, the studio behind the film, have said that they used Maya to model the bricks.

The Lego Movie Complete B-ROLL (2014) footage briefly shows that the animator is using Autodesk Softimage 2012 (at about 8:57) to move the limbs of a digital minifigure.

10 minutes in to the video we can see an animator going through frame-by-frame a partially rendered draft of a scene from the movie. The animator has the ability to draw and possibly annotate on each frame. It's not clear what software this is, it may have been created in-house by the production company.

At 11:15 an employee at what appears to be the LEGO Denmark office shows Phil Lord (co-director of the movie) a minifig from what appears to be a different piece of software used for modelling/animation.

At 12:46 we can see a very short demonstration of LEGO Digital Designer. This software was created before the movie, specifically  for designing LEGO models, it is also free and can be downloaded from the LEGO website.

The software at 11:15 is Sketchup.

When discussing Animal Logic's involvement in the film, they state:

Initially, Production Designer Grant Freckelton and his team utilised LEGO Digital Designer [...]. This allowed everyone, including the Animal Logic art department, to mock up highly accurate LEGO models from which they could calculate the required bricks and build them as subdivision surface assets.

These LDD models where then converted to an internal format that works throughout Animal Logic's pipeline, at which point the could start using their more usual tools:

The bricks themselves were separately modeled in Maya, with asset and layout builds achieved in Maya and XSI.

A pull-quote from an FX-Guide article on the work notes:

Animal Logic’s main toolkit relied on rigging, layout, animation and lensing in Softimage, with surfacing, lighting and rendering done in Maya, MARI and RenderMan and a custom renderer called Glimpse. Effects work was handled in Houdini.


text:
Did all the nxt 2.0 lego content vanish from the Lego website?
I keep finding links to pictures and projects that evidently used to be on an nxt content site at lego. Is all of that information just gone? A site called nxtasy also seems to have vanished. Are there any good sources for nxt project documentation any more?

What specific kinds of documentation are you looking for?

I have Robotics Invention system 2. I have this for over 15years. I lost my CD to program Lego. Can we still download from online? I cannot find anywhere. Please help us. Thanks

Use this link for RIS/expansion packs:
https://www.mediafire.com/folder/718o6673jhpn9/RIS

Why did you post this as an answer?  Doesn't it seem like a question to you?

There is still some NXT stuff on the LEGO website. It is just hidden a little bit. Go to the new Mindstorms website and click on downloads. Then look for the arrows at the top left of the Download Archive section and click the right arrow. You will find a NXT tab. Edit: The NXT downloads have been moved to the main download tab so they are easy to find now.
NXTasy has become http://www.mindboards.net.


text:
Need help fudging a group in 8039
So, I'm building "8039 Venator-class Republic Attack Cruiser ™ Star Wars TM" and I've hit a snag.
I need help fudging the instruction from page 76 of book 1 for that set (see picture below).
I'm out of piece number 4158830 and the variant (Technic Cross-block 2x1) that is one brick shorter.  I also tried the 2x2 Cross Block Fork but that splits the L-beams.

Might not be ideal, but have you tried replacing each Crossblock 2x3 with a Crossblock 90 and a Technic Lever 2M?

You lose a little bit of stability on the bottom edge with only two pin connections instead of four, but I think it'll do the job just fine. The new parts list is then:
 2x Crossblock 90 Deg
 2x Technic Angle Beam 4x2 90 Deg
 2x Technic Lever 2M
 1x Cross Axle 3M
 1x Cross Axle 5M

Thanks for the idea Nathan.  I really need it to help stabilize the connection between the "front" and "back" sections.

Even losing those two pin connections should give you enough stability to tie the front and back together based on the rest of the instructions I was looking at. It's worth a try anyway. Besides, in the worst case there is always BrickLink, right?

Implemented and worked brilliantly!


text:
How to use two NXT bricks for 3+ motors and 4+ sensors?
I need to use multiple bricks in order to use more motors and sensors.  I need to read sensor values, and tell motors to move.
I've tried using bluetooth, however my attempts haven't been very successful.  I know you can pre-define motors/sensors, and then set parameters using remoteGetInputValues(), and the equivalent for motors.
Whilst playing around with this, I have noticed it doesn't work inside a loop, or inside it's own function?
Does anyone know of any tricks/hints/proper instructions on how to work it out?  I've tried looking everywhere for this.
The firmware is up to date, and I am programming in NXC.

You might want to checkout the question How can I use more than three motors which might solve your motor problem. Not sure if you can multiplex sensors though :(

Looking for the sensors!  I can gear up motors but how to get sensor values?! Thanks anyway though!

Maybe you should look into using a multiplexer to add additional sensors to an NXT brick.
The Hitechnic Sensor Multiplexer lets you connect 4 sensors using only 1 of the NXT connection.

The same thing can be done with motors. For example using the Mindsensors NXTMMX, you can add 2 additional motors per multiplexer (even better, if you daisy-chain the multiplexers together you can control more motors than you'll ever need)


text:
What plastic do Quatro blocks use?
I recently picked up a heap of Quatro blocks, and noticed that the plastic seems to be much softer than the normal ABS-based Lego and Duplo blocks. Does anyone know what kind of plastic was used in these blocks?

Just wondering, does this also exclude Duplo and other Lego brick-like products? Note that Quatro are a LEGO product (albeit discontinued), and they are compatible with Duplo (and indirectly to Lego bricks). It seems to meet the criteria outlined in this question.

Also note that there is a dedicated Quatro page at brickset.com: http://brickset.com/sets/theme-Quatro

You are absolutely right. I mistook Quatro as a non-LEGO brand and I apologise. I have re-opened your question and if it is any consolation I have placed a bounty on your question in the hope that you will get an answer.

No worries! I don't think Quatro were very popular :)

I don't have an exact answer for you, but if you are willing to perform a little destructive testing, you can probably get your answer.  This page (http://www.boedeker.com/burntest.htm) explains how to determine a type of plastic based on burning/melting it.

If it is intended to mate with other LEGO products, it is ABS. Just tweaked to be more elastic. Any discussion of materials published by LEGO always says LEGO and Duplo are ABS, with some SBS for tires and rubbery things.
There is some sort of polycarbonate used for the clear pieces, but these are rare, and they don't mate well with each-other, so LEGO actually tries to limit these in production kits.
I can't find a specific statement to this effect, but Quatro is almost certainly some tweaked ABS recipe, if only because they have to mate with other ABS pieces, and the tolerances are very tight for LEGO. Mixing plastics would be tricky (as it is for the PC pieces). Additionally, getting the colours just right so they match the colours in the other sets would be a nightmare if it was anything other than ABS.

The compatibility is actually not very good. Everything fits, but the softness of the Quatro makes it all a bit too loose to build anything useful. All very useful info though, thanks.

One of the design choices for LEGO is that the pieces have to mate well, but never too well. So, they will err on the side of easier to pry apart. This is going to be more of an issue for their sets intended for younger players. I suspect colour mating is probably more of a concern for LEGO when introducing related brands, and this speaks to using the same material processes.

Actually the colors are not very good either! I've sent an email to Lego, maybe they will find someone who can say?

Ah, this is an indication of how much they might have had to change the recipe. I still weakly maintain that it is ABS, if only because this plastic has well-known qualities and is very very stable. But I look forward to any confirmation.

Someone from Lego got back to me and confirmed that they do use ABS. I never would have thought! Thanks greatly for the additional info.

My total guesswork and ridiculous interest in materials science has paid off handsomely!


text:
Why are 2/3 height bricks with studs on the side 2 studs deep?
This question is regarding the 2/3 height bricks with studs on the side. The two that I am aware of are 99206 and 87609:

If you haven't seen them before, these are functionally somewhat similar to an Erling brick used on its side. I'm curious why these bricks seem to be larger than they need to be. It seems to me that these could fit in more places and be more useful if they were 1x2 and 1x4 respectively. Something like a 1 plate shorter version of 11211 and 30414:

Does the extra plate surrounding these parts create new ways that they can be used? Was mold design a factor in creating these parts the way they are?

Mold design is most certainly not the reason as I can't imagine these molds being less complex

In the case of 87609, the piece was first used in 2010 as part of the grill/bumper assembly for vehicles that were the standard 6 studs wide. Its length would appear to be a result of its original purpose. Its width also allows for attaching two rows of detail:

99206 showed up first in 2012. Its design allows for a more compact construction in situations like this:

If the piece were only 1x2, it would have to attach to another part above or below it. The extension lets you attach it flush from behind.

Well put. I kept mulling it over but couldn't put my finger on it....

The smaller pieces you describe would indeed be useful, too.


text:
EV3 Brick Error Symbols?
I am currently developing an EV3 robot that sorts colored technic beams.  However, the brick will only run part of the program and then generate a strange error code on the brick's screen.  The error contains no text, only symbols.  The symbol appears as a triangle with an exclamation point on it, and right next to it is an imitation of programming blocks from the EV3 programming software.  Does anyone know what this symbol means, and what to do about it?
After further experimentation, I have narrowed down the possibilities.  Both MyBlocks that cause the on-brick error contain loops that are configured to loop until a logic variable becomes true.  One of these MyBlocks that has that loop contains more blocks after the loop, but the error comes and the program stops before these instructions are executed.  Still unable to provide a picture, but does someone know why the EV3 does not like logic loops?

Can you add a picture of the screen?

I have gotten same issue, although it came up when I pressed 'connections' on the wifi page. I think this error can mean a lot of different things!

I know that this question is old, but if someone else has this question, I have found that these error messages often appear when you are either trying to access a non existent array (i.e. you copied the block from another project and you did not change the name of the variable) OR when trying to access a value of an array with an index that does not exist (i.e. In an array of size 4 you are trying to access index #4 or index #5)

An example of this error being triggered is by putting a file access code block in front of the play block without tweaking it in any way.

I had the same problem. I figured out that this is caused by something trying to read something on a numeric array that was not there. well, if that is the problem, use an array function as append and put in the value of what you want, kind of like this:
I need to put the number two in the array "dorp 2", so I do this:

I think that it mean that the virtual machine running on the EV3 brick has encountered an unknown instruction.
Perhaps your program has become corrupted or there is an block that is not configured correctly.
I would copy and paste your blocks into a new program and see if it works. If it does not, start a new program from scratch or just copy a little bit of the program at a time and run it in between copies until you find what is causing the error.

Nope, it's certainly not a VM reading an unknown instruction. If that was the case, the error would say "VM PROGRAM INSTRUCTION BREAK." Source: http://ev3lessons.com/en/ProgrammingLessons/beyond/BranchingError.pdf

I have found that usualy it is a problem with the brick not the program, try restarting the brick and turning off wifi and bluetooth

You are somewhat correct, this error appears when you're in the settings tab, but it also shows up when a program is in operation. Just because you have never seen that variant doesn't mean it doesn't exist.


text:
Battery Acid Dust Issue
I was recently digging through some old boxes looking for old LEGO bricks I had as a kid.  In two of the boxes I found old double A batteries that had busted (the boxes were in a building that has got hot during the summer).  Well in the corners of the plastic boxes I found brown dust.  I'm thinking this might be lead dioxide from the exploded batteries.  I also burnt my hand accidentally touching one of the exploded batteries.  Am I right in this assumption?  Is there a way to clean the bricks by soaking them in water with a chemical (baking soda)?
Any advice would be appreciated I just don't won't to lose these LEGO bricks.

It's very unlikely to be lead, smaller batteries don't use it. If the batteries were old rechargables they might contain cadmium (NiCd batteries). Most likely what you had was a disposable AA battery which will be an alkaline cell. As you'd guess, you can neutralise that with acid. But not a strong acid - you don't want to dissolve away the metal parts of the Lego battery box!
There are a few how-to guides on the web that I found, like this one and this one They all suggest either lemon juice or vinegar as the acid, and focus mostly on

don't touch the battery gunk with your hands (or eyes!)
wash it before scrubbing it as well as after
use something disposable to scrub it with
and don't touch it with your hands

Personally I'd put on rubber gloves, dump it into a plastic bucket full of water (always put chemicals into water, never water onto chemicals), swish it around and see whether the mess washes off. That's easy and you'll end up doing it anyway, so starting there might save you even having to find the vinegar bottle.


text:
Turn a tank a specific number of degrees
I don't have a gyro sensor so that's not a possible solution (until I purchase one). I figured I'd just do the math on this one. What I'd really like to know are:

The circumference of the caterpillar track that comes in the Ev3 set. (I was hoping it would be etched into it, but I didn't see anything besides 1-01 in the rubber on the inner part of the belt).
The circumference of the rims that come in the Ev3 set.
The driving "gear" for this is the rim attached to the large motor(s), there are two followers that support the belt. Correct me if I'm wrong, but the only two things I should be factoring into the math are the rim driving the belt and the belt itself correct?

EDIT (answered parts):

If this is correct the length is 14cm.
If this is correct, the circumference is 3cm.

The math you're suggesting may work for going straight forward or backward where slipping is limited.  For a turn, it will not come close.  Even getting the center of rotation of the turning robot will be difficult.  The tracks will have to slip.  A tracked robot can not turn without those tracks slipping.  Differences in friction will alter the turn. More weight on the left or right, front or back of the robot will alter the turn.
Even abandoning the tracks for wheels is not guarantee that the math of how much the robot should turn will match reality.  This is not to say abandon the math, just a hint that it will only give an approximation.

I haven't noticed any slippage (yet, I've been testing on hard surfaces with lots of traction), but what I did notice is that the bearing value in beacon mode for the infrared sensor isn't a value I can base my calculations on. It's not degrees. I'm not sure what type of measurement it is.

As dfrevert said, tracks MUST slip to turn, it's impossible otherwise. The IR sensor returns an indication of the difference of illumination received by the two internal receivers, this is by no way an angle. Same of thing when used as a distance sensor, it gives an indication based on strength of IR echoed to the sensor, so it is not linear and repends on reflectivity of target.

A 360 degree turn takes: (width of robot/circumference of wheel) turns, neglecting track thickness, assuming the tracks are at sides if the robot.
The length of track doesn't matter. Your robots non-slipping part of the track is traversing a circle of diameter=width of robot. The other parts of the track are sliding across the surface.  A longer robot / track only affects the efficiency of turning not the rate.
If the surface is rough, there may be jumping and movement of the center of rotation. Calculations are good but don't be afraid to calibrate to the surface after testing.
Not sure why you are using IR sensors for turning. the ev3 motors have encoders and can be told to turn fractional rotations or by degrees.

One possible reason for using something other than the motor encoder is to account for the slippage - if you don't know how much your tracks are slipping, telling the motor to turn 20 degrees isn't going to result in a 20 degree output.

agreed, but the constraint on the question was encoders only. and since tank drive is a inherently a skid drive, accounting for the slippage correctly is not really possible without something like a gyro or external reference.  In any case in practice, slippage of the pivot points on smooth regular surfaces is not an issue unless pushing something.


text:
Help identifying Lego Set from bags!
I visited Toyrus in Paris recently and bought several lego sets for my son.  Mostly, Star Wars sets.  In each case, we brought the manuals and the cardboard boxes so that he could assemble them.  However, we also bought some sort of car / racing set, but we forgot to bring the box and manuals.  We have no idea what it is so as to find the instructions on the internet.  Are the photos below enough to identify them?  There are no numbers other than a reference to a 2011 set.  It´s 6 small bags, and four other small bags.  Not sure if the last one full of wheels is a separate set we bought just to increase the number of wheels.  Any help will be truly appreciated. Thanks, Pablo

The city people pack is probably 9348: Community Minifigure Set based on the clasic space minifig print.
The numbered bags are probably from 4635: Fun With Vehicles - that's based on the colours and the lime green/"bright yellow/green" cap.
I think the first 2 bags are from 6118: Wheels and Tyres. This set has the same number of the small (8x) and bigger (6x) yellow wheels

Good spot - I was trying to place those Skeleton heads too - they're on the snowmen.

I think the first 2 bags are from 6118: Wheels and Tyres. This set has the same number of the small (8x) and bigger (6x) yellow wheels.

Hi Joost, and welcome to LEGO Answers - you can edit your answer to include the updated info from your comment - I'd also be happy if you added in my answer if you think it's correct - I'll delete mine, and we'll have a single definitive answer then ;)

The numbered bags are probably from 4635: Fun With Vehicles - that's based on the colours and the lime green/"bright yellow/green" cap.
However even with 9348 Community Minifigure Set there's still an unidentified bag of wheels...

Thnak you guys, you are the best.

It was definitely 4635.

Community figures also correct.  Wheels probably bought an extra set (my wife insisted on them, now I recall).  Hell of a lego team archeologists!!!

I've combined all this into Joost's answer so that you can accept a "single good answer" ;)


text:
Biggest European LEGO event?
I was wondering if there is a big European event where new sets and custom sets are shown, and maybe deals on sets or pieces, something like an E3 for LEGO or something similar. I looked on Google but I could only find the Lego World in Netherland, but I could not determine if it is the biggest one.
Does anyone have any more information?

The main show that Lego release new sets at every year is the Spielwarenmesse fair in Nürnberg (Nuremberg, Germany). If you watch the various forums, especially www.EuroBricks.com, you'll see excited posts like this one about Star Wars around the time of the fair. Lego also announce sets at the New York equivalent show.
Models made by fans are usually displayed at Lego fan events rather than big trade fairs. The trade fairs are about marketing and showing things off to retailers. There's a bunch of jargon you might find handy, the main terms being AFOL = adult fan of Lego, and MOC = my own creation. Both defined on this site:
What does "AFOL" mean?
What does the acronym MOC stand for?


text:
What do the V# codes represent in the LEGO shop?
The online LEGO shop references products with a V# code at the end, like this:

What is the meaning of this code?

Where abouts in the shop are you seeing those?

During the checkout and final page. Yeah, I just bought those :)

I believe it's related to the instruction manual format - see the comments to this question.
So for example

V39 may be printed on US standard letter size paper
V29 may be printed on EU standard A4 paper

I have ordered some keychains that had V46 and V120 on the invoice, the Back to School pack is also V46.


text:
API for Android or iOS connecting to EV3 by bluetooth
There is official API for Windows, WindowsPhone8 and WinRT https://legoev3.codeplex.com/ it lets you connect to EV3 brick and control it remotely from your WindowsPhone.
Are there any libraries available for Android (Java) or iOS (Objective-C)?
I would like to write custom app for myself that will let me steer my own robots (using either Android or iOS device).

Hmm, I imagine there will be eventually - I'm guessing MS offered to release the Windows one as LEGO hadn't released the "Commander" app on their platform. LEGO did release a BlueTooth Developer Kit and Mobile Application Software for the NXT so it's probably coming.

Taking a look at the code in the Windows API, there are no external dependencies - so assuming you have access to the Bluetooth ports on iOS/Andriod, there should be nothing stopping you porting this to your platform of choice with a little effort - the main "API" is in the Lego.Ev3.Core namespace, which is pulled into the Phone/Desktop/WinRT projects that provide the communication wrappers that are then used by the sample projects - the Desktop project has the added excitement of Brian's WIImote support ;)

@Zhaph-BenDuguid how about Xamarin would it work on iOS

I have started a c++ iOS API at https://github.com/dsjove/legoev3cpp. Contributions are welcome.

Are you still working on this?  How far did you get?

I wrote an android app to do exactly this using LEJOS.
I have an example java project that uses bluetooth communication here
I'll come back with a link to the actual android app project later, but this will get you started.

Did you ever do the android app as I need a way to read sensors and controls motors from android to multiple ev3

I did, although you'll have to devise a protocol for controlling stuff since I just used raw socket IO. I'll get a link to the android project if I still have it

Thank you, any help would be awesome, I really want to communicate between multiple EV3 and a Android tablet but 1 step at a time :)

Here's the project on my github. Hope it helps!

I think your upload failed man, no src there!

link is fixed now

Did you ever work out how to read sensors, if you could work that out WOW, so useful to people!

This was a school project from a while ago, and I don't even own the robot anymore. So,  no I didn't do that, but you should be able to figure it out given my sample

There's an official app released by LEGO called the LEGO MINDSTORMS COMMANDER.  It's available on both Android and iOS.
I believe this is what you are looking for.  LMC lets you control the EV3 brick via bluetooth on your smartphone.  It's not exactly an API, but it lets you control the EV3.


text:
Are there any LEGO movie/game posters?
I'm trying to find some posters for my childrens room and everytime I find something on EBay etc .. they are all A4 or A3 :(
I'm guessing it's a simple process as getting a nice quality version image and paying a Copy/Printing shop to print one in A2 or A1.
Does anyone know of any links to Lego movie posters that are in a quality that is acceptable for such a high print?
Or links to shops already selling em?
Sample images:
Clones Wars, Indiana Jones, Harry Potter, BatMan, LOTR.
As this is for personal use (sigh - I can't proove that unfortunatley :( ) that I shouldn't have any issues with copyright etc?
Appologies: for not having enough rep to create valid/accurate tags.

If you subscribe to the Lego Club (availability depends on your location) you will receive the official Lego Magazine and often a free poster is included. The March/April 2014 edition contained a reversible poster with the Lego City theme on one side and the Disney Princess theme on the other side.
Occasionally, you may receive promotional Lego posters with some purchases at the Lego Shops (or online shop). Brickset lists a few of these here.
Bricklinks is place where you could purchase posters that are no more available from Lego. Here is a list of all posters on Bricklink.

My son has a Lego Movie poster on his wall that he got in the "Mega" magazine a few weeks ago. I think it's A2 sized. We're in the UK though (I don't know where you're located) but I'd recommend looking at any magazines in shops to see what they include - some of them are a little expensive for what they are, but they usually bulk them out with free "toys" too.
In addition: Veynom has made a great suggestion, we subscribed my son to the Lego Club and he's had a few posters in the free magazines that come through the post (apologies that I can't upvote the post, I've just started in the Lego site and need 15 rep first).

Besides posters, another thing you might consider is cloth display-banners. If you live close to a LEGO store or LEGO retailer who uses these, often all you have to do is ask for them when they go out of season. Here is an article featuring many of these beautiful banners. They are really pieces of art and they are large too: http://thebrickblogger.com/2013/09/lego-display-banners/


text:
Is it possible to create a custom differential if I don't have it as a ready-to-use element?
I have numerous gears, axles and other elements from different Lego Technic sets.
I wonder if using them I can make a kind of differential like this?

If not, how can I implement similar functionality in case I have two motorized wheels on one axis that can be steered and connected to motor(s) via cardans/u-joints like this:

This can definitely be accomplished, although it will be difficult to create a differential as small as the dedicated piece that you mentioned.
Some builders create their own differentials for use in larger models because of the inherent torque limits and slippage that the traditional differential and single bevel gears introduce. Here's one example (source) of a differential that can be created using fairly common elements:

The key is to build the frame containing the three gears and then attach a fixed gear to the frame. The tricky part is finding a gear that can pass an axle through the center without being fixed on it. In the example above, half of a turntable was used, but there are a few other parts that could work as well. Here's the turntable (48452):

If you are comfortable with modifying your parts, you could also drill out the center of a gear to allow it to turn freely.

Yes - in fact, you can even improve upon the basic design, to create a limited-slip differential.
Here's one by Rob Stehlik, via http://individual.utoronto.ca/stehlik/torsen.html (found via https://www.planetdiecast.com/index.php?option=com_zoo&task=item&item_id=29846)

The key here, which other answers don't note, is that the rotating part of the axle does not have to pass through the center of the cog. Instead, here it is offset through the outer holes.

The link doesn't work on the date I have tried it. Is there an alternative link?

@PrimePrice Thanks for reporting the dead link! I found another version. I've updated the link in the post.

The delicate problem in a brick-built differential is to create the frame. It must have a gear to drive the differential and this gear must let the axle rotate freely. Without parts modification, the only possibility is to use a turntable, either the big one or the small one. Anyway, the solution is bulky and not economical (the differential parts are cheap!). The big version can be interesting nonetheless in large vehicules that require a lot of torque, see here.


text:
Programming RCX in 10.9 environment
My school has 15 RCX robot kits that this year has just been sitting because all the old computers with OS X 10.4 are now gone and we are using OS X 10.9.  I would like to run the original RoboLab Software (1-2.0) because it is for middle school kids.  The graphic programming interface works great with these students.
Is there anyway I can do this.  I would hate to toss the 15 sets as they are still very usable. We also have 6 NXTs.
What are my options here?

NXTs can jump to the latest version of EV3 software.  That version is downloadable from Lego.

For the RCX devices, if you want to use the RIS or RoboLab software on OS X, your best solution is to see if a VM image running Windows gives you what you want.
The main problem will be accessing IR Tower: the Mac doesn't have a COM port without a serial dongle (which could be had for cheap, but they can be a pain to use). And a USB Tower (if you have them) may not work in a virtualized environment. You would have to experiment.
Alternatively, you can use something like NQC or LeJOS for the RCX 1.0/1.5/2.x devices (any RCS 1.0 device will accept the latest 2.x firmware) on OS X. This is, of course, very command-line oriented.
Perhaps the latter solution could be reserved for the more advanced coders in the group.
I see that there is already an answer that enumerates some of the places you might be able to find RIS 2.0.


text:
Is there a way to convert a 3D model into a lego sculpture?
After researching this question for a few days, I want to post it here so I can share what I learned in an answer, and hopefully learn some new techniques too.
If anyone has found another way to do this, please share! If anyone has used Legolizer for 3ds Max, an answer explaining that process or that has examples of it being used would be useful too.

You can use Brickify for that. You just upload an STL file and it is converted to LEGO bricks. You don't need the 3D printing part and can go ahead to download the building instructions.

I found a few ways to convert a 3D model into a Lego sculpture. The first is a program called Dolphin Brickr. It works very well, as you can see in this image of Yoshi:

The downside to this program is that it only runs on Macs, This runs on both Windows and Macs now and the output format is a series of images, one for each layer. So you can't import it into MLCAD or your favorite Lego building software. I was looking for something that uses the .ldr format.
Another program is LSculpt. This worked okay but I couldn't seem to get great results.
I'll been using a 3D model of Nautilus for my examples. Here is a picture of the LSculpt results:

The black version was created from LSculpt and the blue version was creating using my alternate method. It is also worth mentioning there is another technique, a 3ds Max script called Legolizer. Unfortunately, I don't have 3ds Max so that wasn't an option for me. I wanted to do this using only open source software on Windows. Here is how you do it:

Step 1 - Scale your 3D model
You need to scale your model down by a factor of .833. I used MeshLab and the process that it described in the Dolphin manual.
Step 2 - Convert a 3D model into a binvox file
This is done using a program called binvox.exe. You can read about it and find the download link on this minecraft wiki. All you need to do is to download binvox.exe and then copy your 3D model into that folder. Open command prompt, cd into that folder, and run a command that looks something like this:
binvox nautilus.obj -d 128 -rotz -rotz

nautilus.obj is the name of my 3D model, -d 128 specifies the size (128 x 128 x 128 voxels), and -rotz and -rotx will rotate the model. You will have to experiment to get the right rotation, or your bricks won't face up at the end. You might want to start with -d 32 to speed up the process until you get the orientation right, which you won't find out until the end. The output from this is a file with the name nautilus.binvox.
Step 3 - Install Cygwin (optional if you know what you're doing)
I would recommend installing cygwin for the following steps, since that is what I used, but you don't necessarily need it. You just need a way to run c++ and Perl programs. When you install it you can select packages, make sure you install the package named perl and the package named gcc-g++.
Step 4 - Convert the binvox file to a readable txt file using read_binvox
Download this program called read_binvox. Make sure it is saved as read_binvox.cc. Then copy your .binvox file into the same folder. Open Cygwin and cd into that folder. Then run
g++ read_binvox.cc -o read_binvox

to compile the program. Next, you can run it with
read_binvox nautilus.binvox

This will create an output file called voxels.txt.
Step 5 - Convert voxels.txt into your .ldr file
I wrote a program in Perl that will convert the voxels.txt into a .ldr file. Create a new file named binvox2ldr.pl in the same directory as your voxels.txt file. File it with the contents from this pastebin.
Then go back to that directory in cygwin and run the command:
perl binvox2ldr.pl voxels.txt > nautilus.ldr

This may take a while to run, depending on what size you made the sculpture. The program uses a very basic algorithm for combining bricks together. It may have floating bricks, so I wouldn't recommend just using the parts list from that and expecting a secure, perfect model. But I think it could be a good way to start a design for a sculpture. The script could definitely use some more improvements, but it's a basic start.
Step 6 - Editing and Render
You can use these instructions from ldraw.org installing some tools for editing and rendering the sculpture. I used MLCAD to change the color and then rendered it using POV-RAY. Here's what it looks like:

I have had much success with LSculpt and it can create models in great detail unlike your sculpture (although, it runs slower when you do that).

Do you know where Dolphin resides these days?

@tommy.carstensen It appears they changed the name of it. Here's the new link http://lgg.epfl.ch/publications/2013/lego/

I know this answer was written and edited a long time ago, but could you suggest an app, preferably OS X, for creating the 3D model files?

@Craig I haven't done very much 3d modelling, but I think Blender might be a good one to try: https://www.blender.org/download/

authors: Μανος Σπυριδοπουλος


text:
Can EV3-G MyBlocks be recursive?
Imagine I create a MyBlock called function1 from a line of blocks. Can I call that block from within itself?

This is the program for the block recursiveTest.
Will this block function properly?

No, EV3 MyBlocks cannot be recursive. If a MyBlock contains a copy of itself, then the following error will be produced upon compiling:

For some reason, LEGO's programming software has become progressively less immediate about notifying you that this cannot be done. In EV3-G, it waits until compile to let you know that you can't do this. In NXT-G (the software for programming the NXT), trying to put a MyBlock in itself produces an error upon placing it. And in the Robotics Invention System 2.0 (the software for programming the RCX), it simply won't let go of the MyBlock you're dragging if you try and place it into itself.
If you want a programming language for the EV3 that supports recursion, I'd like to offer LeJOS EV3 (Java-based, free) and ROBOTC (C-based, costs money) as alternatives. They're both EV3-compatible, and support recursion.


text:
How can I make a precise one-way clutch using Technic elements?
I need a mechanism so that if a (NXT) motor rotates forward, it moves one gear, but the other stays still, but if it rotates backwards, the first gear does not move, but the second one does.
I found an example solution for one half of the problem here (I would need 2 of these), but that seems like it would take part of a rotation to pick up, and I need mine to be really precise.
I am building this for the Z-Axis/Extruder of the NXTStrap.

Would this solve your problem? Depending on the direction of the input, only one axle will turn.

Does this solve @Ari Porad 's problem? The best resolution you could get with this device is 1/4 of a turn.

^ Why would you say that? It's free to rotate as much as it wants, because the four-lobed "Gears" will simply slip underneath the angled stoppers, in one direction.

@RallyToMe, technically MindS1 is right, it could take as much as a quarter turn until the knob wheel gets locked. This can however be reduced by using ordinary gears, the more teeth the smaller the error at the price of increased size.


text:
Does NXC work with EV3?
Is it possible to create and run NXC programs on the EV3 brick?
I installed BrixcCC, created a simple Hello World NXC program and selected "Download and Run" in the Compile menu.
The EV3 brick made a sound as if the program was downloaded; however, nothing happened on the EV3.
Very strange, but I was unable to find ANY good info on this subject on the web.
Would very much appreciate your help.

Not yet. You can try RobotC that's pretty similar.


text:
Was it once possible to put a 1x1 round into a minifig cup?

I remember being able to put a 1x1 round brick into the top of a minifig cup before my dark age (the period of time that a person stops building with Lego, up to the time they pick up the bricks again), but I have tried it since and can't do it.
Was I imagining that connection, or have they redesigned the minifigure cup?
Is/was there another connection that I might have confused with the minifig cup?
(This would have been sometime in the 80's, but the bricks in my collection went back to the '70s.)

As the two given answers attest, I was indeed imagining this.

I remember this too...

I still have cups and 1x1 round bricks from the late 70's and I can ensure you these were never brickable like you suggest.
In the 80's, another popular build from Lego was composed of a transparent cup on top of a transparent minifig head. Here is a colored example of that build.

That's the answer, after 15 years the memory gets a bit foggy.

Is it possible that you are thinking of this goblet (2343)?

This part was fairly common, and it was introduced around 1985, so it was probably in your collection.
1x1 round plates attach securely to the top as shown in this lamp from the Pet Shop:

As the others mention, I don't think it was ever possible. Like the goblet part mentioned above, another possibility is that you were putting them in the sauce pan (#4529) which first appeared in 1983. Scala cups (#33054) will also fit one but they didn't appear until 1997.  I think these dates are correct, I know someone will correct me if not :)

Just a suggestion (although it may not have the desired result of being able to stack more on top) but I believe you could flip the 1x1 round brick upside down and put the top into the cup hole. If I had the pieces readily available I'd try it.

Indeed this works, just doesn't "clutch" the stud.


text:
How to use printed bricks from set 850425 into LDD?
I would like to know if it is possible to use the printed tiles (those with letters) from the 850425 set into the Lego Digital Designer (LDD)?

And if it is possible, the next question is "how" of course. :)

There is a method of adding custom decals into ldd using the app files but I'm not completely sure on it. I think it uses something called "Povwin"

https://github.com/chicks-net/lego-business-card-holder

No. It is not possible to add printed tiles in LDD. The closest you can get is just putting plates into the design and adding stickers.


text:
I have a 16x16 stud clear base plate. Where is it from?
I found another grab bag treasure. I ended up with a 16x16 stud clear(ish) base plate. A quick look at bricklink gave me a no items found message. I'd like to know which set(s) this piece can be found in as I have grand plans in mind.

Any of these three sets
(AKA:
6162-1 A World of LEGO Mosaic 4 in 1
6163-1 A World of LEGO Mosaic 9 in 1
852676 Travel Game - Multi Game Pack 9-in-1)
Probably.
Bricklink hint: just search for a size, like "16 x 16". "3x3 plate" is fun too.

It would be helpful if you provided more than just a link.

authors: אדם רובינפלד


text:
Programming with Lego Mindstorms EV3
I know this question was asked in the past, but I want an up-to-date answer.
What is the best way to program with the NXT with a oriented object programming language?  Ideally C#, C++ or Java (maybe Python).
I've search a bit, but I have difficulty to find what is popular today.
I'm really interested in Mindstorms, but I don't want to program with boxes.

When we did NXT programming in university we used NXC (http://bricxcc.sourceforge.net/nbc/) as our primary language.
This is a C-stlye language, not exactly object-oriented, but seeing that NXT programming is practically equivalent to microcontroller programming, C is much better suited to this task in my opinion. In C you get a much clearer main loop that controls your robot, and I can't really see what benefits would object orientation bring to a platform that is clearly restricted in both input/output capabilities and computational resources.
But if you really need object oriented design, take a look at LeJOS: http://www.lejos.org/

The last update of NXC is 2011, I'm not sure it's still maintained.  LeJOS seem to be updated frequently, I'll probably try this one.  Thanks

You can use C++ with c4ev3, also available as Eclipse Plugin.
If you are ok with sending the commands remotely, you can even use any language that supports popen() like functionality, (which includes every useful language out there, with some bash-fu even Brainfuck). Check out moveEv3.pl.


text:
EV3 IR Beacon/Remote Programmability
Can the EV3 IR Beacon/Remote be programmed to emit other IR signals, like for triggering a camera?
I'd like to use the Mindstorms EV3 kit for building a hyperlapse photography rover where it moves, waits X seconds, triggers the camera, then repeats.

No, the EV3 IR remote (which uses the same protocol as Power Functions remote) is not programmable. The simplest way of doing your timelapse photography is to press the button of your camera remote with a cam on an EV3 motor...


text:
Robot that searches for lights
I use Lego Mindstorms NXT 2.0. I want to schedule my robot to move to where there is light αnd then when it finds it (a large amount of light, for example 80%) to stop and move another motor for 30 degrees. Then stay still for 10 seconds and after that to search for another light.
Can you help me please?
I use
port B: right motor
port C: left motor
port A: the degrees motor
port 3: a light sensor

Is the light sensor pointed forward?, down?, on a turntable?

forward.for example I want ιτ to follow a lens

Depending on the design of your robot, you may not need the third motor. Just move the left and right motor in opposite directions.

no..the third motor I want it for other use.how to move the motors in the light beam with one sensor?it is not difficult to make my robot to turn.it is difficult to turn into the light.

In pseudocode:

LoopBlock (forever)
    MoveBlock (B and C motors, 75% power, forward, forever)
    -- unclear here, probably want to head for brighter light
    -- instead, just wait for 80%
    If LightSensorBlock (port 3, greater than, threshold 80%) Then
         MoveBlock (B and C motors, stop)
         WaitForBlock (time, 10 seconds)
    End If
End Loop

I want my robot to follow the light.To track where there is light. when the brightness is more than 80% to stop and to move a third motor 30 degrees.

i thing that its beter to use two light sensor to rotate my motors.

"two light sensors to rotate my motors"?  I'd suggest using just one light sensor and getting that to work before jumping to two.

One light sensor pointed forward suggests that the robot should at regular intervals, stop turn right, turn left, and compare those light sensor values and compare to make sure the robot is still headed in the right direction. Start with just that.  Spinning in a circle and finding the brightest value would be a next step.

I made that with the spinning.my problem is that i cant do my robot to turn in to the light beam of light.i manage to start when it realize the light or to stop.but it cant turn right or left in the beam.

if i use two sensors and compare the values of the light beam i thing its more easy.if you think something let me know.

#pragma config(Sensor, S3,     lightSensor,         sensorLightActive)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

task main()
{
   wait1Msec(50);                        // The program waits 50 milliseconds to initialize the light sensor.

   while(true)                           // Infinite loop
   {
      if(SensorValue(lightSensor) < 45)  // If the Light Sensor reads a value less than 45:
      {
        motor[motorB] = 0;                  // Motor B is run at a 0 power level.
        motor[motorC] = 30;                  // Motor C is run at a 30 power level.
      }
      else                               // If the Light Sensor reads a value greater than or equal to 45:
      {
        motor[motorB] = 50;                  // Motor B is run at a 50 power level.
        motor[motorC] = 50;                  // Motor C is run at a 50 power level.
        while (SensorValue(lightSensor) >80) // If the Light Sensor reads a value MORE than 80:

{

  motor[motorC] = 0;

  motor[motorB] = 0;
  motor[motorA] = 10;

}

      }
   }
}

Finally I got it done!!!!

This always turns right if there's not enough light. I'd suggest that when you lose the light source your robot should: 1 turn left a bit, 2 store the current light value, 3 turn right twice of the amount in step1, 4 check if the current light value is higher or lower than the stored one. If higher than the light is probably to the right side, so it can just go forward. But if the stored value is higher, you need to turn back to the left the same amount as in step3 and keep going that way.


text:
Link 1 x 6 with Stoppers Part 2739b
Will Link 1 X 6 connect to Liftarm 2 Axle Holes and Pin / Crank (Part 33299)? The Link will be attached to a coke can, that needs to drive a crankshaft.

2739b from Peeron

33299 from Peeron

The half pins on the ends of the lift arms will fit into the round holes of the steering link, yes, but they will obviously have full rotation within that - it's not a "locking" connection.
The idea with the link is to lock a pair of those arms together so that they pivot in unison.

authors: ƒиαƒƒσχу 2196


text:
How can I make product suggestions to TLG?
I'm sure lots of is have had ideas for products, parts, sets, themes or services that we'd like LEGO to produce. What are the best ways of proposing them to TLG, and of persuading them to take on our ideas?
The options of which I am already aware:

For themes and individual sets, you can make a proposal at ideas.lego.com/, and if you get enough votes and TLG think your idea has sufficient commercial merit then it might be made into a set.
You could try to get with TLG and if you manage it, you might be able to influence them from within.

Is there anything else we can do?

There is the LEGO Ambassador program too: http://aboutus.lego.com/en-us/lego-group/programs-and-visits/lego-ambassador

The mission of the LEGO Ambassadors is to work together with the LEGO Group in all areas which concern the worldwide LEGO community and be the voice of their respective LEGO User Group towards the LEGO Group.

This means you should contact a LEGO User Group (preferably one in your area) and try to raise your suggestion to the group's Ambassador.


text:
Does LEGO generally restrict the sale of LEGO sets in a country?
I live in Israel where LEGO are available but for insane prices. Generally 5X the price of a LEGO set online. I have called LEGO asking to have a LEGO set shipped to me, and they have told me that they will not ship directly. When purchasing from online sites, they tell me they can not ship to Israel.
Is this common practice internationally?

It might be possible that they don't sell directly to customers in Israel to avoid backlash by the governments of countries antagonistic to Israel.

@nick012000 that doesn't explain the other 120~ countries

This is probably due to an "exclusive importation and sales agreement". An exclusive importation agreement means that the manufacturer (Lego, in this case), gives some importer exclusive rights to sell their products in some country. In Israel, Lego has such an agreement with "Ilanit Toys Ltd.", and I guess they don't want to (or legally can't) infringe on the importer's sales.

The LEGO Online Store states that it can deliver to:

Your LEGO® order can be shipped direct to you or a friend/relative in select countries within Europe and even to North America and Asia/Pacific.

The list of shipping locations includes:
I guess they have their reasons for not including Israel in that list - presumably it's either because of excessive handling/customs fees or shipping reliability - I'm guessing that's more the issue rather than other sites being told they can't send LEGO (specifically) to Israel.
I found a guide for eBay sellers planning on shipping to Israel written by a user here which talks more about the customs issues.

That's actually a VERY short list. Doesn't even have Japan , or South Africa, or any country in Africa/ Middle East etc. I'm guessing this is more than just a customs issue.  Because as I said, Legos are sold here, and online stores will sell other goods to Israel.

It is a short list - and you're right, it's probably more than a customs issue, it's probably a logistics issue as well (although it does have South Korea on there which is interesting).

I wonder if those are countries that Denmark has Free Trade laws for, and must ship to them directly, as apposed to being able to sell the rights to sell legos to a specific supplier.
I also just noticed that the screenshot implies, that not all lego products will be shipped to all those countries.

Sorry for late reply, but I don't think much has changed, I think the list contains only countries where LEGO has official stores. For example, in Israel almost every toys store sells LEGO sets, but there are no official LEGO stores and so, Pick'A'Brick does not ship to Israel, sadly


text:
Any good alternatives to BrickLink?
I'm trying to find certain bricks online, and of course, came across BrickLink. But it's so darn hard to use it; search is absolutely useless, and I can't figure out how to use the catalog for the life of me. Are there any good alternatives out there?
(I've skimmed through peeron.com and BrickOwl, but haven't had time to really investigate -- can anyone vouch for them?)

It took me a lil while to figure out but once I did, I love bricklink. I couldn't live without it to be honest. Invest the time to figure it out, it'll be worth it if you need various parts & pieces as much as I do.

BrickLink is by far the best place to buy LEGO. It is also very easy to use. Once you get how it works, you will never look back. There are several very helpful videos on YouTube showing you how to use BrickLink most efficiently. Here is one: http://youtu.be/Cyat8aFVk_k
I have also put together a detailed written guide on how to use BrickLink here: http://thebrickblogger.com/2011/02/shopping-on-bricklink/

Thanks, BrickBlogger. But I would argue that if you need a written guide and/or video tutorial, then it's most likely not easy to use. (Maybe instead of "easy to use," I should say "intuitive".)

Also: BrickLink 2.0 is in the works and I suspect (ok, hope) it will be more intuitive.

Good point. I can appreciate that. In my experience BL was easy to use from the beginning; I could find and buy the parts I wanted. However the site is quite robust and there are ways to take advantage of advanced functions. There are whole books written about how to use eBay, so BL is no different in this regard. The video and the guide are just ways to shorten the learning curve for new users.

I'm amused that your response to "bricklink is hard to use" is a flat contradiction.

BrickBlogger: I think eBay -- though not the prettiest of sites -- is easy to use in that if I'm looking for a "16GB iPad Mini with 3G", I can type that into the searchbar and I'll find relevant results. On BL, if I want to find a 2x2 yellow block, how do I go about looking for that? I wish I can just type that into the search bar, but it's not that easy. With eBay, it's easy to get started, but will take time to get to Pro status; with BL, it seems like it'll take a while just to get started...

If you search for "Catalog Items", you can usually find the brick you want then you put the Brick Number into the Items for Sale search to find it.

@rioforce - But how do you know the brick number?

@Rocketmagnet - you can search the BrickLink Catalog by part type. Like for example you are building something and you run out of 2x4 red tiles. You go to BrickLink, you go to the Catalog section, look up Tiles, and it will be right there. From then you just pick the color you want and you are ready to order. :)

I just did a search on all three sites for "2x2 yellow brick."
Peeron returned 50 results in a wall-of-text format with no images and I really didn't want to sift through it. But I did and none of them was a standard 2x2 yellow brick.
BrickLink returned 16 results, all with individual images of specific items, none of which was a plain yellow 2x2 (but almost all of them were 2x2 bricks colored yellow or green).
BrickOwl returned 58 results, most of which would make sense to someone who had no idea what Legos are, but none of which were a standard 2x2 yellow brick. More than half of them had a generic white 2x4 "this product is a Lego brick" image, which meant I had to read the description of each item to discover if it was what I was looking for.
So out of those three websites, BrickLink was the one that most-quickly informed me that I was using imprecise (but pretty good) search terms and Peeron was the one that most-quickly made me feel that I never want to look at that website ever again. BrickOwl made me feel like I was searching eBay for a replacement screw to the door panel on a 2003 Saturn Ion with the grey door panels instead of the standard black ones, and I know the original screw was a phillips head but I need a hex-head screw. I had to actually click on 47 results before realizing that "grey" isn't the correct color name and I needed to look up what Saturn called "grey" in 2003 (it's "Storm Gray," btw).
The problem with wanting a simple search function in the Lego catalog is that the catalog is so huge and the terminology so ambiguous (to the uninitiated) that a simple search query isn't likely to give you what you want unless you ARE familiar with the terminology or already know the part number you're looking for.
Conclusion: as complicated as BrickLink appears to the new user, it is the best-kept database of the three. There are images for (I'm very sure) every item, and the catalog is broken into very easy-to-understand categories. The website is difficult to navigate and the forum is absolutely useless, but if all you want to do is buy bricks, BrickLink is it.

I think BrickOwl is the best alternative to Bricklink, I placed an order there and it worked as well as on Bricklink. The fact that many sellers on BL also sell on BO. There are only two things that BO can't compete with BL: inventory, and a bit higher price.

Thanks, Tien. Just checking -- do you personally prefer BO over BL? Or are you just saying it's a decent alternative?

@Gabe Let's say, if I want to buy some pieces I'd check BO first, then BL (of course I know the chance I found them on BO is less than BL :)).

FYI, I've been adding some custom items to sell on BO and found some issues with it although those are seller's issue: inventory management is hard and far less intuitive than website interface, help document is incomplete, and support is poor.