Search for t want to read the keywords I in Topics


Content goes POOF during an edit! Then--->

A couple sentences of the disappeared content appear in a whole NEW, unpublished Ible that I never created.  I lost A LOT OF WORK and I want to cry out of frustration. ;_( btw... I did "Save" changes a few times during the edit, but 90% of the content is still gone.

Topic by bajablue    |  last reply


I can't find my instructable

Hello!  I've seen it's been there a couple of times, but I don't know what should I do. I wanted to publish my instructable , but it didn't show up in recent, Also I can't find it with keywords. Only way it can be seen is through my profile. I read something about filters. What should I do to don't end in them?  Thanks everybody for answers! Eldalote

Topic by Eldalote    |  last reply


an extremely complex situation with a girl, read the details.

 okay. this is gonna be long. theres this extremely pretty girl i know. shes like helen of troy. and ive been in love with her like ever since ive seen her. shes in my circle of friends, though we're not that close. we're still somewhat close. however, we dont talk much in class. on facebook, i always start the conversations, and she replies with one word answers (she does that to everyone). shes the only remotely hot girl in like the entire school (what a gay place). but quality makes up for quantity by a huge margin. i dont look that good, though i present myself well.  so basically, i want to get closer to her. like real close. like extremely close. close enough to ask her out and expecting an unconditional yes. i want to be like, her best friend. thats hard. HELP.

Question by gamesgreenhome    |  last reply


link to parts in 'ble for easier search and categorisation

Hello fab fun instructable people, I would like to see instructables linked to their basic ingredients. This way, when I englishly search for vhs and get 1.5 pages of hits that don't have anything to do with vhs's, and then search for vcr and get over 5 pages of hits, I can instead... go to a page, and 1) look at the main basic ingredients that instructables are based upon, 2) reading through them at my leisure, and 3) can think up a new 'ble that has not been done before. Lets say this another way. Looking up at the menu bar, I would like to click a link that says ingredients, that will take me to a page, that will list 50 items (configurable from user profile) which are said to be the main components of an instructable. Clicking on one of these items will take me to another page, which will show that item/component with instructables that have chosen to build with that item/component. So here there will be a list of recipes with said ingredient in. From this list I should be able to read up on all the 'bles marked as having the american vcr tag, which may or may not also have the european tag of vhs. Can I say it again? Let me try. The way to do it with drupal: So if each 'ble is marked with a tag (taxonomy = drupal) this tag is a new field that is attached to each instructable. Each 'ble can have many tags. So this tag can be seen as being a multiple field of parts or ingredients which may be added to an 'ble listing, if he author wanted to be thorough. Next, a 'view' could be created listing all the tags/ingredients/parts used. This view is the main content, and could show on a page a number of items. Each item comprises of a picture of a generic item, item description and item title. The picture can be 48x48pixels, thus allowing for a good pageful of items. Users could have options in their profile to show number of items per page, and to show icon size preference, and say have a small icon view with the 48px icon view, and a medium with 120px, and a large with 200px, maybe for each page of results. So the results page is different from the item/category page. On this item page as on the results page will be the previous and next links, plus also the usual panels that exist on the side and the footer, and of course the header. Essentially the content is what the view is. Clicking on one of these items, will take a user to a search page, listing all items tagged with that specific term, i.e. vhs or vcr or both (you could put a rule saying tag anything with a tag of vcr with the vhs tag, or you could keep them separate, and have both items in the 'view', adding that one is americanised and the other is anglocised with some kind of footnotes). This may open up instructables to be multilingual at some point in the future too, if that was ever something to look forward to the future for. Now, somehting irrelevant to the above idea from happening: if you think I raise a valid point, cool, I would like to be put forward for charity membership, and have myself seen as exempt from having to pay for pro membership. I do not expect this. IDEA* this is another great thing you can add to the site. If possible, tell me so - and then I can make an instructable based on doing charity work not necessary for any return favours, but as an altruistic form of behaviour, and gain credit towards another kind of mem'ship, maybe even community service. I do a lot of charity work, helping others in need, and for people who would like to give but haven't enough to support themselves, or believe that people in Africa or elsewhere have more of a need than themselves getting pro mem'ship, I think that allowing people to have the option may solve grey areas, for instance, where some people who do not fit the 'pro' mold could fit into. I love this site, and I love you guys and girls for doing such a fab job. I wish I was part of the team. Hal p.s. Pro Members should be able to change their nicknames, or have more than one that is hidden from others.

Topic by Advocat    |  last reply


light bulb

Hi, i got a problem with the power supply of a light that i found in an old car. it is a 6V 55W  light, the thing is that i want to make it work with a battery made of several cellphone bateries but i don´t know really whats the  voltage and current that my recicled battery must have in order to turn on the light and survive. thanks for reading, and i hope  anyone can help me.

Topic by kvalero  


Can anyone help me with useing a QTI sensor with the Arduino? Answered

Im working on a line following robot and have some QTI sensors from my basic stamp days I wanted to use them with the Arduino but cant seem to get the Arduino to read them Would really like any help I can get

Question by TheMONKEY    |  last reply


Featured Author: Shazni

Hello! I recently had the joy of interviewing Shazni.  As a long time author she had a lot of interesting answers and I highly recommend reading the interview. But if you have any more questions that you would like Shazni to answer, here's the place to do it!  Seriously how could not want to know more about the person that won that many instructables t-shirts!

Topic by MsSweetSatisfaction    |  last reply


which potentiometer to use for time lapse motor

I was looking at a camera slider and this motor for a time lapse slider: http://www.amazon.com/gp/product/B00436ULLA/ref=ox_sc_act_title_6?ie=UTF8∣=AUUK2J4ODEV5F I read somewhere online that someone used a rotisserie motor and hooked it up to a camera slider for a time lapse of about 40 minutes, but if I wanted to make the motor move even slower for a longer time lapse, can I hook up a potentiometer somewhere in the rotisserie motor? If so, what type of potentiometer should I get? Would this work: http://www.amazon.com/Parts-Express-10K-Ohm-Potentiometer/dp/B0002KRE20/ref=sr_1_1?s=industrial&ie;=UTF8&qid;=1355018144&sr;=1-1&keywords;=potentiometer

Topic by dylanp1936    |  last reply


What's the operating voltage for a wii motion plus?

I'm using a wiichuck adapter to interface my arduino with wii motion plus. I've looked around, and some people say it takes 3.3 volts, while others say it's 5 volts. Which is it? I don't want to fry my wmp.

Question by 4lifenerdfighter    |  last reply


Rotary potentiometer to pulse output.

Hello everyone, I'm having a challenge!I'm working on a code for my Arduino UNO.In this project, I will be using a rotary potentiometer to emit a keyboard signal for a simulation. when the potentiometer is being rotated I want to change the speed in the simulation, this normally works with a single keypress. So when it is rotated, the output I want is only ONE press when rotated a certain value. I want the Arduino to give a single pulse when the variable of the analog input has a certain change in value.Example: If the value changes from 0 to 1, I want to have ONE signal pulse to use as a keyboard signal.Example: if the value changes from 7 to 6, I want to have ONE signal pulse to use as a keyboard signal.I hope you can help me with this :)This is the code i use to separate the value into 30 units instead of 1023:const int analogInPin = A0; // Analog input pin that the potentiometer is attached toint sensorValue = 0; // value read from the pot int outputValue = 0; // value outputvoid setup() { // initialize serial communications at 9600 bps: Serial.begin(9600); }void loop() {// read the analog in value: sensorValue = analogRead(analogInPin); // map it to the range of the analog out: outputValue = map(sensorValue, 0, 1023, 0, 30); // change the analog out value:// print the results to the Serial Monitor: Serial.print("sensor = "); Serial.print(sensorValue); Serial.print("\t output = "); Serial.println(outputValue);delay(2); }

Question by Levincible    |  last reply


Knex dock

Greetings people. I'm T-Nod. I just joined this group, even though I have been active on Instructables for many years now. You might or might not have noticed me, for even though I've been here for so long I have only posted 17 instructables (almost all of them Knex related), with most of them being 'average' to say the least, and most of them were slideshows with incomplete instructions. One of the few things of my that did recieve a lot of positive criticism though, was my Knex dock, designed for my DS. It wasn't all that special, but it sure was one of the best Knex docks out there. And I did win the third place in the Knex contest with it, along with a nice patch. And today I saw it has reached 4.95 stars, which is an amazing rating! Looking at how good the dock was, I decided to design another dock. But not for a DS this time. I was thinking of a dock for a book. I like reading a lot, and I figured out it would be easier to read if I had a dock with it. No need to put your finger on the pages, easier holding, reading handsfree. Plus, Knex docks have in my opinion a very high coolness-factor. :-D But before I start, I want to know; is it worth trying? Is there anyone who is interested in this? Would anyone want to build it? Are there many book readers and knexers on Instructables? tl;dr, I'm making a knex dock. Interesting, yes or no?

Topic by TigerNod    |  last reply


Confused College student

Hey guys, I haven't been posting alot lately, but I remember whenever I would post you guys would have the nicest and thoughtful replies out of any forum I've posted on.... So I was kinda wanting to hear everyone's thoughts on college, careers, etc... I'm 20, currently in community college, have been since I was 18, should have my associates....but no, I don't. Honestly, I haven't taken school seriously at first, haven't applied myself, just done whatever I wanted, and I'm just now getting serious, and the last two semesters, GREATLY improved my GPA and definitely taking school more serious. At the moment I just keep taking general courses since I don't know what to do. I've wanted to do things from fashion design, to web design, personal training, massage therapy, but mainly what I want to do is have my own business eventually. The best case scenario, would be for me to have my own t-shirt line that later turns into a full fledge fashion design. Problem is, telling the parents I want to make t-shirts for a living doesn't always go over well....as well as most business entrepreneurship programs I've researched require calculus...andddd, I'm having trouble passing college algebra..you know? And then part of me is in love with the idea of being a musician...I love to write lyrics, and I've fooled around with recording at home and etc....I'd love to travel, even if I didn't make millions, that's fine....just even able to make enough to survive...I'd be fine if I could pursue that... And thennn, there's all of you! I read books and magazines about DIY and sites like this, and they always have stories about a bunch of young people turning in a empty building into a super awesome music venue, or some other artistic place... Or people that have started new unique businesses and ideas. I mean what the heck! I don't know what to do...I'm about to turn 21 this summer, and have no idea what I want of life, all I know is that I want to have fun doing whatever job I choose, and be able to live comfortably...even if it takes me awhile... And I have no idea how to do that :(

Topic by luna522    |  last reply


Duplicating a SIM card?

Hi. I have an Iphone 5s with an AT&T SIM card. I will be going to sleep away camp at the end of this month. At camp, they allow you to keep your phones, but the head of the camp takes your SIM card so that you cannot call, text, or use the internet while you are at camp. This is going to be a big problem for me this summer because a lot is going on in my life at the moment, and I really need to keep in touch. I heard that it is possible to duplicate your SIM card. If this is true, I will sneak the duplicate card in. Ideally, I would like to be able to text/imessage, and be able to connect to the internet. I want to keep my same phone number. Additionally, once I leave camp, I would like to put my old SIM card in, as well as on field trip days while I am there (they give your SIM cards back for an hour on trip days.) I feel like this plan could definitely work if I execute it properly. I already have a plan to make sure no body finds out, so that part is settled. However, I read somewhere that switching between SIM cards can really screw up your phone. And b.) I heard that doing this is illegal and that doing this means AT&T will shut my phone service off permanently. I don't wan that to happen. If someone could answer my questions or tell me how to go about doing this, that would be great. Thx  

Question by SarahS273    |  last reply


does the sd or sandisk cards have fit completly to use with adaptor to plug into my pc.?

I no this sound so stupid but i have a adaptor for my sony camera and i just got microsdhc card with adapter and i trying transfer stuff from my phone to the computer or vise versa.i dont want mess up my card but will it work if i still can fit into the adapter from the camera to the pc.it still has little space.so it only75%fits.will it work or mess it up. so what i trying to ask is if even though my sandisk is littler than the slot that i need to plug in can it still read it or no?again it sound stupid but never know til ask.dont want mess it up.by way my pc kinda old.only has one those thick usb plug ins.that why i want know if i can use my camera adapter and just stick my little card in best as possible and if it works.lol. thanks so much

Question by brianne413    |  last reply


DC power logging, or at least measuring (for solar panel & devices)

I have searched and searched, but I can't seem to find what I need. I want to be able to log power and plot a V-I graph and a P-t graph. I was picturing tapping into an iphone charge cable (for example) and wiring in connections. Here, I could connect the device, so that when i connect the phone via charging usb cable, current runs through the device and is measured, and voltage is read from inlet of the device to gnd. Do these exist? I'd like to also use it for a solar panel (putting a big wire loop resistor for a load to draw max power) so that I could see where the power tops out, what voltage is yielded when the max current is drawn, etc. It would be nice to be able to plot data points in excel for example. Any idea? Even if I can't LOG the data, I'd like to be able to read instant power use, not just V and A. I've seen the inline USB meters that do that. Anything helps! Thank you!

Topic by Phoenix17    |  last reply


Need Serious Help from those who know about screen printing supplies!!!!

Hello Everyone, it has been some time since I was last on and everyone has always been so helpful. I have a friend who has offered to buy me some screen printing supplies. I would like advice on what to get as there are a number of different options and ranges of "skill level" for lack of a better word. I have been mixing a medium with acrylic paint and hand painting my designs on bags, jackets, etc. I REALLY want to get into "screening." Nothing mega big like my own store or anything, mainly just to sell a few here and there and my friends. T-shirts mainly, just simple designs or text in one or two colors. I don't have any supplies thus far, so any good deals on Kits you could recommend would be great. I'm in an apt and don't have a whole heck of a lot of space to set up a studio as I see some people doing. I just want to make like 10 or 20 shirts at a time and I want high quality materials but not necessarily the best of the best. I just need to know the basics to get me going, any advice on process of screening would be great too, I've read a lot and seen videos but I am always wanting to know more! I hope i make sense in all this, I just want some serious advice. Thanks to all of you in advance.

Topic by Ladykba    |  last reply


NEED HELP! - Boxing Pad Man w/ Programmable Lights array?

I had an idea... Since I cant go to training for a while, I wanted to build my own Pad Man! haha (well thats what I'd call it.) The idea is, I would mount pads on a metal frame (which would be drilled to the wall) and I would hit the pads... Lights would light up next to each pad in which combo I need to hit, (on a timer so the lights would show up then I have 3-4 seconds before the next combo) and it would be random... (even better than that would be having audio go with it, saying numbers) I know physically this would be possible (ie, the pads and the frame) but could I program the lights and the numbers with some sort of mini circuit board?? Thanks for the help guys, would be a wicked build I would even put a video up of it working! I think I will start on the frame and pads, and will try and google something for the light array but I really have no clue where to start (not really done anything like that before.) So Please oh wise instructables!! Show me the way!!

Topic by L4YERCAK3    |  last reply


Pin-screen

Hi, I want to make a scanner, or maybe a "modeler". Background info keywords: https://www.youtube.com/watch?v=lvtfD_rJ2hE   <- NOTE THIS PROJECT IS WAY WAY MORE ADVANCED, I WANT A HIGHLY SIMPLIFIED VERSION OF THIS. https://www.physicsforums.com/proxy.php?image=http%3A%2F%2Fi.dailymail.co.uk%2Fi%2Fpix%2F2014%2F01%2F15%2Farticle-2539962-1AAFD4DD00000578-400_306x317.jpg&hash;=18c044d58272f31902c0c6194ba64eba   <- PICTURE OR JUST GOOGLE IMAGES:  PIN SCREEN Pin-screen. I want to make something that detects where each position is on a Z-axis (their x and y coordinates are fixed). So just a third number per-pin would allow me to map out the entire layout of the pins. I am not too sure if this has been done before or not. If anyone knows of a product that does this I would really appreciate more info. Anyways, THE ARDUINO PROJECT: - Something that takes feedback from each pin and maps it out in the computer. THE QUESTIONS: - How to read the feedback? (what sensor can I use, note that there will be hundreds of these sensors, so they have to be preferably small. Are there some very small linear position detectors? is an optical detector better? (I WOULD PREFER IT TO BE STURDY, i wanna play with it). Im thinking it should be something similar to how TVs work, with a pixel-matrix but instead this would be a matrix of position feedback, and I think it would be simpler than a TV since each channel only gives out 1 feedback (Z-position) instead of an RGB code (3 codes per pixel).  Anyone have some ideas on how to develop this project. Thank you!

Topic by david606    |  last reply


HELP!!! GIRL TROUBLE!!!!

Please help me im in a BAD situation!!!!!!!!!!please read this long story and help me out, by giving advice.Promlemo 1Well you see the girl that i kinda fancied, fancies one of my 'friends', hes not a best frind or anything just like a pal.Anyways, he likes her too and they are thinking of going out.Problemo 2The girl that i kinda fancied, well one of her best friends fancies me. But i absoloutly don't like her back!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(emphasizing)Absoloutly! I DON' T WANT TO GO OUT WITH HER!Problemo 3Anyway the girl that i don't want to go out with, some how got my msn address. And yesterday, i got invited in a big group conversation with her in. She asked me "wud u go out wid me?" i said no.Then she said i Know you like me aswell.And i said 'nope'.She also started embaressing me in the group conv by saying 'luvey duvey' comments about me. Everyone in there was LOLing, LMAOing, ROFLing.It was really annoying and, i was thinking of not going school the next day but i did go.Shes very shy and quiet in class. Promlemo 4 WORRY!Im really worrying, if she asks me out at school, im not very good with these kind of encounters. How can i say NO to her?I really don't want to go out with her. I know all of youll think give her a chance or don't be mean, but NO i absoloutly don't want to go out with her.Problemo 5The girl who i kinda fancy, well i chatted to her for the first time yesterday on msn. and it went pretty smooth. But today she hasn't been on. Has she blocked me :(, or deleted me or WHAT?Can you all please be apreciate. And give me soloutions to the problems above!!!!!Im hoping Goodhart or Mr. Rig will help me out really well.But i want anyone to help at the moment. Give serious answers on what i can do to all 5 problems.BTW i have to find a soloution to Problemo #4 by monday, because i might see her that dy at school.Im really annoyed.PLEASE HELP!Thank You for reading this ridiculously long explanation.HELP!!!

Topic by Baron A    |  last reply


i want my motors speed to be constant with the temperature via an equation, its a school project. help!? Answered

My project is to make a fan that will be constant (speed) with the temperature of the surrounding, display the temperature on an lcd screen and have a servo tilt it up and down. I have made my code for now and it seems correct, i think my problem is with the clarity of my code or the power. lcd + motor + servo = aprox 15 volts, i use the aruinos 5v connected from my laptop to power the lcd screen and i have an external 9v battery for motor and servo. Please help me connect the battery correctly or change my code?  Speed = temp * 6.375 why? because= max speed is 255, and i think 40 *C is a max temperature + 10*C was the lowest temperature and 64 was lowest speed i preferred. so 255%40 = 6.375 to test then i used lowest temp and speed. 64%10 = 6.4 so i thought 6.375 was good because any higher would mean it would reach a number higher than 255. but this equation seems to give decimals, maybe arduino wont read decimals as speed? or am i coding for something different than what i want to accomplish?  english is my second language there fore it was probably a bit unclear to understand, sorry! Copy of Code: //Temperature Run fan with Servo angle tilter #include // Servo library of commands #include //lcd library of commands LiquidCrystal lcd(12,11,5,4,3,2); //set pins const int temperaturePin = 0; const int motorPin = 9; Servo servo1; int speed; void setup() {     servo1.attach(6);   lcd.begin(16, 2);    lcd.clear();   lcd.print("Temperature");     pinMode(motorPin,OUTPUT);     Serial.begin(9600); } void loop() {   float voltage,degreesc, degreesF;   int position;     lcd.setCursor(0,1);   voltage = getVoltage (temperaturePin);   degreesc = (voltage - 0.5) * 100.0;     // Tell servo to go to 180 degrees, stepping by two degrees   for(position = 0; position < 180; position += 2)   {     servo1.write(position);  // Move to next position     delay(20);               // Short pause to allow it to move   }   speed = constrain(speed, 0, 255);           float (speed);      {         speed = degreesc * 6.375;         analogWrite(motorPin, speed);      }      lcd.print("  deg C: ");   lcd.print(degreesc);   Serial.print(degreesc);     } float getVoltage (int pin) {   return (analogRead(temperaturePin) * 0.004882814); }

Question by Fernando T    |  last reply


I Screwed Up Windows Xp's Boot Sector,And I need To Boot From The Second Partition.?

I Used Gparted To Resize My Old Laptops hdd 10Gb Partition to About 6Gb,It Had About 5GB Of Free Space. Now,It Says Operating System not Found,In The First Partition IT Has Windows Xp Installed,On the Second,It Has Windows 2000 Installed,I Need some sort Of Bootloader To Start Windows 2000 So I can Fix Up everything else,Not to mention,I don't have the windows Xp DIsk Anymore,It Has A floppy drive,I Want Some way To Put A Boot Loader On the Floppy Disk And To Start Windows 2000 From My second Partition,I Tried Gag,Some Boot Loader,But It fails,It Simply Does not work,Does anyone know Of anything else that can do this?

Question by ReCreate    |  last reply


Building custom tiny stereo to output sound from two different sources

Hello there, I'd want to build a tiny custom stereo, small enough to be mounted on a forearm. It has to receive input from two different sources: my smartphone (should act as a simple mp3 player) and a head mounted microphone. As I'm not into electronics really, I would use some help. I've read this instructable as reference: https://www.instructables.com/id/Simple-Stereo-Amplifier/ I'm not pretty sure about what kind of speakers I should use and what exact components I should need. I'd want to use two speakers and I don't really care about stereo sound, actually I would prefer mono sound. Maybe I could use one speaker for the phone output and the other one for the microphone output. I'd also like to put the amplifier distant from the speakers, since the forearm mount should be as slim as possible, so I'd put it in the back trousers pocket, if I manage to make it small enough. As you see I'm kind of confused, I have ideas, but not knowledge. Have you got any guide or whatever I could use? Thank you for your help!

Question by gabry207    |  last reply


ESP8266-01 DTH22 5 minute Delay?

Hi, I want to add a DHT22 sensor node to my Openhab setup. A simple way to do this is by using a ESP8266-01; I have a few around. I use the Arduino 1.6.5 IDE since that is what I have. I am having problems with the timing of the loop: I do not need readings every minute or so, 5-10 minutes is more then enough; I do not need that much data. I also want to run the node on batteries in the future so less transmissions is what I want. However, when I use a delay of more then approx. 24000 mils the ESP stops working, lower values are no problem.  I have tried several approaches, none work. Can anyone help me out? The sketch I use is below, you can see what I tried in the comments: #include #include #include const char* ssid = "Yggdrasil"; const char* password = "XXXXXXXXX"; char* topic_t = "openhab/esp8266-1/temp"; char* topic_h = "openhab/esp8266-1/vocht"; char* server = "192.168.X.X"; String clientName = "esp8266-1"; //time peter, idea taken from https://www.safaribooksonline.com/library/view/arduino-cookbook-2nd/9781449321185/ch12.html const long oneSecond = 1000;  // a second is a thousand milliseconds const long oneMinute = oneSecond * 60; const long fiveMinutes = oneMinute * 5; //time peter #define DHTPIN 2 // what pin we're connected to #define DHTTYPE DHT22 // DHT 11 DHT dht(DHTPIN, DHTTYPE,15); WiFiClient wifiClient; PubSubClient client(server, 1883, callback, wifiClient); void callback(char* topic, byte* payload, unsigned int length) { // handle message arrived } void setup() { Serial.begin(115200); delay(10); dht.begin(); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.print("Connecting to "); Serial.print(server); Serial.print(" as "); Serial.println(clientName); if (client.connect((char*) clientName.c_str())) { Serial.println("Connected to MQTT broker"); Serial.print("Topic is: "); Serial.println(topic_t); Serial.println(topic_h); } else { Serial.println("MQTT connect failed"); Serial.println("Will reset and try again..."); abort(); } } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } static int counter = 0; String payload ; payload += t; //payload += ":"; //payload += h; String payloadh ; payloadh += h; if (client.connected()){ Serial.print("Sending payload: "); Serial.println(payload); if (client.publish(topic_t, (char*) payload.c_str())) { Serial.println("Publish ok"); } else { Serial.println("Publish failed"); } //peter if (client.connected()){ Serial.print("Sending payload: "); Serial.println(payloadh); if (client.publish(topic_h, (char*) payloadh.c_str())) { Serial.println("Publish ok"); } else { Serial.println("Publish failed"); }} //peter } else { if (client.connect((char*) clientName.c_str())) { Serial.println("Connected to MQTT broker"); Serial.print("Topic is: "); Serial.println(topic_t); Serial.println(topic_h); } } // delay (20000); //WORKS FINE // delay(5*60*1000); //STOPS AFTER FIRST READING AT STARTUP delay(fiveMinutes); // STOPS AFTER FIRST READING AT STARTUP }

Topic by PetervdPol    |  last reply


Monitor powered by ATX

I searched for hours with varying keywords and can't find too much information...  12v to pin 1 and GND to pin 2 but what do I do about the neutral? I read a xbox 360 laptop mod but it involves the 5v too, and connects it to the power brick. I'm trying to do something different. Trying to make a lunchbox out of a macpro 1.1 case. 1 wire to plug into an outlet is better than needing two. Before I get into this project im trying to understand what I need to buy and feel kinda silly asking such a question which should be extremely simple but I want to be safe and dont want to fry anything. For those that are actually interested in what I'm doing, I kept staring at the case thinking "what can I make with this, and the items I have laying around?" I thought I'd 1-up the basic hackintosh build and go against the grain of using the case how it's intended. I flipped it so the side with the I/O ports were sitting flat, measured the inside which gave me 7" of workable space with 0.4" wiggle room which made perfect for an mini ITX to be laying flat down instead of against the wall. I thought I could take my dremel and cut out an area for a LCD monitor. I have enough DVD drives laying around as well that I could make a "push tray to eject keyboard" sort of slide out keyboard upgrading the rails, using an ultra thin keyboard with a track pad and top it off with sound activated lights and my 1.5 TB HD that's almost full of music. I realize I can do this with a laptop and pocket usb speaker/light effects, but it wouldn't be as cool and I wouldn't get to reuse these items I have sitting around.

Topic by bvarious    |  last reply


Off-line Instructables Editor

Often, projects do not happen at our computer desk, or even somewhere with internet. Maybe you want to work on your Instructable on an airplane ride. Maybe you only have access to the internet at the library. Either way, it would be nice to have an official Instructables user interface that is available for download. You could completely flesh out your Instructable on your own time, without access to the internet, and then just upload the whole thing all at once. The steps, keywords, images, and instructions would all auto-fill into an online version and you'd be set! Woo! I understand this would take some work, but I'm just throwing it out there. Something preliminary could even just be a rudimentary template that you work within and then the site can read the template and grab everything it needs off your computer. Your thoughts?

Topic by BeanGolem    |  last reply


Wearable 5 V 9 A power supply? Answered

So I am making an electronic t-shirt with a very bright screen that gobbles up amps. At it's probable peak usage it will be using 9 amps (or 8.697, but I always feel safer sizable margin of error). Luckily this will only be at its peak for a few seconds (at most 10 seconds, probably less) when it starts up. Next it will use  between 4.5 to 3 amps continuously, and later will  be using closer to 1 amp. All of this is at 5 volts, and I will be stepping down from 7.4 volts. As if this wasn't hard enough this is battery powered, so good efficiency would be nice. I want to minimize the amount of power lost. Is there a power supply that can do all this and still be wearable? In short, I need a wearable 5 volt power supply that can provide a few seconds of 9 amps and 4.5 amps continuously.  Thanks! Edit: Thanks Everybody! For people who find this in the future, here’s from saving you from having to read through all the posts… In the end I found the answer to my problems was cutting the peak amps it needed to consume it half, bringing it down to around 5 amps. What I ended up choosing was the R-745.0P power supply. Look at the last page of the datasheet for clarification on how to wire it, and when it comes. The mpilchfamily thread talks about safety, which is important and worth reading if you want to know about it. I wasn't sure on whether or not I should go with the R-745.0P and all the supporting components or the UBEC 2-5S, which is an all in one package. I chose the R-745.0P but it’s up to you!

Question by GenAap    |  last reply


Internal USB converter? Please help!

Hi. I just ordered this, http://www.amazon.co.uk/IB-864-Front-Panel-Reader-Multiport/dp/B004FLEFVU/ref=sr_1_13?ie=UTF8&qid;=1366146730&sr;=8-13&keywords;=icy+box , to connect to a psu I have running on it's own, and with the hope of connecting it to the USB port of my laptop and using it as a USB/Card reader extension kind of thing. Now, rather foolishly I didn't think about how I would connect it to my laptop. I know for sure I can connect it to the PSU with the Molex connector, but how could I connect it to my laptop? This is the connection info it has: USB 3.0 - EXTERNAL to the mainboard or USB 3.0 PCI-X extension card via USB 3.0 cable USB 2.0 hub and card reader: INTERNAL to the mainboard via USB 2.0 cable eSATA: INTERNAL to the mainboard via sata cable Audio: Internal to the mainboard via Audio cable Power: Internal to the system power supply via Big-4Pin Molex Sorry if I'm being stupid, but what concerns me is how it says internal and external, I dont really know what it means, like, is an internal USB 2.0 cable different to an external one, and how could i connect it to a standard USB port? Sorry for the long winded probably really confusing post, basically I just want to know how I can connect this to my laptop's USB port to be able to connect USB devices and use USB sticks and read memory cards lol Really sorry for the bad post, but thanks a lottttt to anyone who can help!!

Topic by DomHawthorn    |  last reply


What to do with an old digital camera? Answered

Hello guys. I have a Fujifilm MV-1 camera lying on my shelf. My grandma gave it to me, she probably also had no use for it. It eats 4 AA batteries, takes 1600*1200 JPGs  and  320*240 video, has a tiny LCD and a flash. It has a 2-phase shutter release switch, so probably it does not have fixed focus. I have found something that looks like a memory card slot (about 4cm long) , and read something about 16MB built-in memory. ( ow ) Also, it feels cheap. So now I was thinking, what to do with it? Things I was thinking about:     -converting it to an IR camera, but I don´t know whether I have a real use for IR images of such low quality.     -using it to make time-lapses ( I don´t want to waste my D3100´s shutter for that ) - that would mean at least some modification to the electronics.     -removing unneccessary components ( like the flash )     -some kind of a case-mod, because it is fugly right now.     -some kind of power source mod, maybe add a cable adapter, or something like that Any ideas? No limits - all ideas welcome - from simple hacks to total conversions and anything. Thanks, guys UPDATE: I already took it apart, so a case mod is neccessary now. I´ve had some new ideas:  -A body in the "classic film camera" style, but made from wood, with a better lens ( or possibly switchable lenses? ) and an additional cable release -A water and weather proof camera, tough construction, for shooting time lapses at any time ( probably also a better lens ) What do you guys say?   ( I probably should have made this a discussion )

Question by rjbatc    |  last reply


I need help for my electric imp/arduino project....

Hey, I have been working on a project centered around what chris nafis has already done with the grove dust sensor. So far, I have managed to get the dust sensor hooked up to an arduino and I have been getting it to display data, but that's about it. My next step was to get an elecrric im on sparkfun's imp shield to read serial data from the arduino in the form of numbers and then output it to COSM. However, for some reason, this does not seem to want to work on the leval of the imp. I followed most of jimb0's instructions on sparkfun for imps and arduino, but this does not seem to work. I have an arduino leonardo outputting serial data with serial1 at 19200 through pins 1 and 0 to the shield, which it then supposed to connect an imp running a program to patch this to a cosm node. I know nothing about squirrel, just using this code to do things: // Transmit data between UART and Input/OutputPorts on the impee // by: Jim Lindblom //     SparkFun Electronics // date: September 26, 2012 // license: BeerWare //          Please use, reuse, and modify this code as you need. //          We hope it saves you some time, or helps you learn something! //          If you find it handy, and we meet some day, you can buy me a beer or iced tea in return. local rxLEDToggle = 1;  // These variables keep track of rx/tx LED toggling status local txLEDToggle = 1; // impeeIn will override the InputPort class. // Whenever data is received to the impee, we'll jump into the set(c) function defined within class impeeIn extends InputPort {     name = "UART Out";     type = "number";         // This function takes whatever character was sent to the impee     // and sends it out over the UART5/7. We'll also toggle the txLed     function set(c)     {         hardware.uart57.write(c);         toggleRxLED();     } } local impeeInput = impeeIn();  // assign impeeIn class to the impeeInput local impeeOutput = OutputPort("UART In", "number");  // set impeeOutput as a string function initUart() {     hardware.configure(UART_57);    // Using UART on pins 5 and 7     hardware.uart57.configure(19200, 8, PARITY_NONE, 1, NO_CTSRTS); // 19200 baud worked well, no parity, 1 stop bit, 8 data bits } function initLEDs() {     // LEDs are on pins 8 and 9 on the imp Shield     // They're both active low, so writing the pin a 1 will turn the LED off     hardware.pin8.configure(DIGITAL_OUT_OD_PULLUP);     hardware.pin9.configure(DIGITAL_OUT_OD_PULLUP);     hardware.pin8.write(1);     hardware.pin9.write(1); } // This function turns an LED on/off quickly on pin 9. // It first turns the LED on, then calls itself again in 50ms to turn the LED off function toggleTxLED() {     txLEDToggle = txLEDToggle?0:1;    // toggle the txLEDtoggle variable     if (!txLEDToggle)     {         imp.wakeup(0.05, toggleTxLED.bindenv(this)); // if we're turning the LED on, set a timer to call this function again (to turn the LED off)     }     hardware.pin9.write(txLEDToggle);  // TX LED is on pin 8 (active-low) } // This function turns an LED on/off quickly on pin 8. // It first turns the LED on, then calls itself again in 50ms to turn the LED off function toggleRxLED() {     rxLEDToggle = rxLEDToggle?0:1;    // toggle the rxLEDtoggle variable     if (!rxLEDToggle)     {         imp.wakeup(0.05, toggleRxLED.bindenv(this)); // if we're turning the LED on, set a timer to call this function again (to turn the LED off)     }     hardware.pin8.write(rxLEDToggle);   // RX LED is on pin 8 (active-low) } // This is our UART polling function. We'll call it once at the beginning of the program, // then it calls itself every 10us. If there is data in the UART57 buffer, this will read // as much of it as it can, and send it out of the impee's outputPort. function pollUart() {     imp.wakeup(0.00001, pollUart.bindenv(this));    // schedule the next poll in 10us         local byte = hardware.uart57.read();    // read the UART buffer     // This will return -1 if there is no data to be read.     while (byte != -1)  // otherwise, we keep reading until there is no data to be read.     {         //  server.log(format("%c", byte)); // send the character out to the server log. Optional, great for debugging         impeeOutput.set(byte);  // send the valid character out the impee's outputPort         byte = hardware.uart57.read();  // read from the UART buffer again (not sure if it's a valid character yet)         toggleTxLED();  // Toggle the TX LED     } } // This is where our program actually starts! Previous stuff was all function and variable declaration. // This'll configure our impee. It's name is "UartCrossAir", and it has both an input and output to be connected: imp.configure("UartCrossAir", [impeeInput], [impeeOutput]); initUart(); // Initialize the UART, called just once initLEDs(); // Initialize the LEDs, called just once pollUart(); // start the UART polling, this function continues to call itself // From here, two main functions are at play: //      1. We'll be calling pollUart every 10us. If data is sent from the UART, we'll send out out of the impee. //      2. If data is sent into the impee, we'll jump into the set function in the InputPort. // // The end It's not mine, but I modified it slightly t work with numbers instead of strings. I an then using this arduino code on a leonardo: ;int pin = 10; unsigned long final; unsigned long duration; unsigned long starttime; unsigned long sampletime_ms = 30000; unsigned long lowpulseoccupancy = 0; float ratio = 0; float concentration = 0; void setup() {   Serial1.begin(19200);    while (!Serial) {     ;    }   pinMode(10,INPUT);   starttime = millis(); } void loop() {   duration = pulseIn(pin, LOW);   lowpulseoccupancy = lowpulseoccupancy+duration;   if ((millis()-starttime) > sampletime_ms)   {     ratio = lowpulseoccupancy/(sampletime_ms*10.0);  // Integer percentage 0=>100     concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve     final = concentration*35     ;Serial.println(concentration);     lowpulseoccupancy = 0;     starttime = millis();   } };int pin = 10; unsigned long final; unsigned long duration; unsigned long starttime; unsigned long sampletime_ms = 30000; unsigned long lowpulseoccupancy = 0; float ratio = 0; float concentration = 0; void setup() {   Serial1.begin(19200);    while (!Serial) {     ;    }   pinMode(10,INPUT);   starttime = millis(); } void loop() {   duration = pulseIn(pin, LOW);   lowpulseoccupancy = lowpulseoccupancy+duration;   if ((millis()-starttime) > sampletime_ms)   {     ratio = lowpulseoccupancy/(sampletime_ms*10.0);  // Integer percentage 0=>100     concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve     final = concentration*35     ;Serial.println(concentration);     lowpulseoccupancy = 0;     starttime = millis();   } } I would really like some help, as this is my science fair project and I am the only person that I know that knows about Imp, and sadly we don't have any hackerspaces around where I live in alaska.

Topic by qquuiinn    |  last reply


Arduino 3 button light control

A friend asked me to build him a controller for a 12v Arrow board (roadwork sign) he got second hand (original controller is completely missing) So after asking him what he wanted it to do, it needs 4 modes: 1: Off (that is easy) 2: Point left 3: Point right 4: Hazard mode (top and bottom of the arrows alternating on and off, top left - bottom right on, then top right - bottom left on)  Once in a mode it will have to stay there until turned off I assume. (unless there is a way to go back and pick another state after a long period of time?) Three buttons should do the trick to pick a mode but here is where I reach a problem, I am sadly lacking in programing of a state machine? (if I understand what I need correctly that is) Sadly after watching videos and reading posts about them around the web I have become very confused on how to even get them to work or if they are what I need. The control electronics are relatively easy, there are 7 groups of leds (image I hope shows that) the plan is to drive them from one of those 8 relay boards from ebay. 7 positives (inputs) All ground to chassis Not asking for someone to code this for me I want to learn how (just asking to being pointed in the right direction or if I am going about this wrong) Button control has always confused me, I programed traffic lights for my model railroad with two modes but that was a simple if statement (if switch on this mode else other mode) but that sadly wont work here. My apologies if I am not asking this well (head still spinning from looking up state machines) - Bluesunelight / T W Sawyer

Question by BlueSuneLIght    |  last reply


How to send a value from Blynk to Arduino?

Hi All,I am doing my project by using blynk and arduino mega. This code is to control Relay by measuring temperature and humidity through dht11. Now I programmed that Relay is off when the humidity is over 60 which is the fixed value. However, I want to add slider or other input switch to set the humidity value on the app. And then the set value is sent from Blynk to Arudino. Therefore, Relay will be on or off, depending on the set value. I’ve been trying it but failed. Please anybody can help me? Thank you.#define BLYNK_PRINT SwSerial #include SoftwareSerial SwSerial(10, 11); // RX, TX#include #include char auth[] = “*****************************”; #define DHTPIN A1 #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); BlynkTimer timer; void sendSensor() { int h = dht.readHumidity(); int t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit Blynk.virtualWrite(V5, h); Blynk.virtualWrite(V6, t); if(h<60){ digitalWrite(52,HIGH); } else{ digitalWrite(52,LOW); } } void setup() { // Debug console SwSerial.begin(9600); pinMode(52,OUTPUT); // Blynk will work through Serial // Do not read or write this serial manually in your sketch Serial.begin(9600); Blynk.begin(Serial, auth); dht.begin(); // Setup a function to be called every second timer.setInterval(1000L, sendSensor); } void loop() { Blynk.run(); timer.run(); }

Question by chocomilk77  


Digital Picture Frame How-to Building Guide

Digital picture frames are a really popular gift project here on Instructables, and lots of people are searching for digital picture frame how-to's. So, here's a guide to some of the best digital picture frames we have:Cheap 'n Easy Digital Picture FrameTotal cost was under $100, and could be substantially less if you're savvy.Digital Picture Frame Numero Dos!I made this as a wedding present for a very good friend of mine, and I think it turned out very well. Granted the cost of digital picture frames have come down significantly in the past year alone, but that wouldn't be handmade, customized, or particularly interesting to read on Instructables.com, now would it?Hanging Laptop Digital PaintingTake your old laptop, matte it, frame it, and convert it into a hanging framed digital lcd screen to do with as you like.YET! Another Digital Picture FrameAll Picture frames i have seen are nice, but I wanted something else: A really nice frame (custom made and that's ain't cheap), a nice size (14.1") and with some "extras" (wi-fi, bluetooth, etc). This is a brief description how to disassemble a notebook and assemble a nice digital frame.DIY Digital Picture Frame (the easy-lazy way)Inspired by the "12 dollar digital picture frame" on makezine.com, I bough the Jukebox from Ebay and the connectivity kit from K-Mart. At a garage sale, I found just the type of frame I needed: one that would fit the Jukebox and the SD card INSIDE it.Find more digital picture frames using the digital picture frame keyword.

Topic by ewilhelm    |  last reply


This arduino code does not work as expected, any help? there seems to be an issue with the digitalWrite function. Answered

Recently, I wanted to make a laboratory grade linear semi-precision power supply using an Arduino, LCD, some comparators, and MOSFETs. Idealistically, I want measurements to be 3 significant figures of precision (0.1% accuracy @ 30V), voltages as high as 30V, and max current of 10A. The power supply is most likely going to be just a single regulated output, maybe if I feel lucky I will make 2 regulated outputs once I get the darn Arduino code to work. The Arduino's job is to simply set and read the output voltage, and is not part of the control loop. That is what the comparators are for. (I learned the hard way that using the Arduino within the control loop just results in parasitic oscillations because the Arduino is a clocked device and can only self correct at timed intervals.) Anyway, below is the code. I made explanations of all portions of it as clear as possible, and I also give the wiring used for the LCD, 4 buttons, and analog inputs used to set and read the voltage and current. However, the issue arises when I upload the code, the setVI button does not work unless I press both it and the RS button at same time. I made the many of the integers display in the serial output to diagnosing easier hopefully. I can see the setVI integer and my dudd integer only goes HIGH when  either it and the RS buttons are pressed simultaneously, or when the RS butten is held down for a long enough time. However, as far as I am aware, nowhere in the code do I manipulate that code so setVI goes HIGH dependant on other buttons, so I am bewildered by this parasitic phenomenon. Is my Arduino MEGA broken? I had a similar problem in the past, where I had multiple analogRead statements It strangely seemed to factor in the outputs of other input pins. Anyway, here is the code. Maybe someone could upload it and tell me if it functions properly on their arduino? That would help me determine if it is indeed a software issue. (p.s. I use an Arduino ripoff called the Funduino, but it is not broken in any way, I don't think?) Any and all help would be greatly appreciated, thank you in advance, -Max-. p.s. To make the code below legible, please copy/paste it in an IDE or in notepad and convert it into a monospaced font, it will make it very easy to follow. //---------------------------------------------------------------------------------------------------------------// /* Arduino Software for lab power supply. Wireing guide:        **Wiring for 16x2 LCD:**       * LCD RS pin to digital pin 12       * LCD Enable pin to digital pin 11       * LCD D4 pin to digital pin 5       * LCD D5 pin to digital pin 4       * LCD D6 pin to digital pin 3       * LCD D7 pin to digital pin 2       * LCD R/W pin to ground       * 10K resistor:       * ends to +5V and ground       * wiper to LCD VO pin (pin 3)    **Wiring for buttons:**       * RS       button to pin 6  (as a digital input) -- Switches from reading read current/voltage values to setting those values, and Vice Versa.       * VIselect button to pin 7 (as a digital input) -- Switches to the 'set' mode and flips from setting the voltage to setting the current.       * UP       button to pin 8  (as a digital input) -- Increments the voltage or current up when in the 'set' mode.       * DOWN     button to pin 9  (as a digital input) -- Increments the voltage or current up when in the 'set' mode.    **Analog inputs/outputs:**       *A0   -- Measures a potential of a resistor divider that can output a voltage of 0-5V based on the 0-30V output this PSW capable of.       *A1   -- Measures the current flow through a resistor to measure current. (Some reason there seems to be a pulldown resistor on this pin, so the voltage does not float.)       *Vout -- This will be later implemented if I get a DAC, for the increased resolution. (1024 is just not enough in my opinion. At least 12 bits)       *Aout -- This will be later implemented if I get a DAC, for the increased resolution. (1024 is just not enough in my opinion. At least 12 bits) */ int UP    = 0;      // These are the 2 buttons used to incrementally int DOWN  = 0;      // step up or down the voltage on the output int RS = 0;         // These 2 buttons tell the LCD to either read out the voltage on the analog pins. (I plan to change this so it reads from a 14 bit ADC and writes int setVI = 0;      // the voltage output through a 14 (or 16 bit) bit ADC. I need 3 significant digits, or at least 0.1% accuracy. int dudd = 0;       // this dudd (dummy variable) is just here to prove that digitaslreading pin 7 works very weird! Any help on this? int preRS = 1;      // Anything with a "Pre" before it is simply what said integer/variable on the last loop. I use these to prevent a parasitic int presetVI = 1;   // oscillation of states that they control, so when a button is pressed, it will not jump between 2 states every cycle. int preUP    = 0; int preDOWN  = 0; float Aset = 0.00;  // I need these to be "floated" so I can set the exact value of these to 3 significant digits. float Vset = 0.00;  // Aset and Vset define what the output voltage *should* be, and are defined with the UP/DOWN buttons. int VIselection = 1;// this variable will invert when Aset button is pressed. Similar to the IVselect, this number will also invert int READorSET = 1;  // Bset button is pressed. This allows the mode to be changed from SET mode or the READ output mode, thus allowing                     // one to compare the output voltage and current to the set value, as well as set the output voltage and current. #include LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// initialize the library with the numbers of the interface pins void setup() { //-------------------------// I tried making diagnosting this thing easier by making all the important data availible in the serial monitor.   lcd.begin(16, 2);   Serial.begin(9600);   Serial.print("INPUTS         RS:           READorSET:       setVI & dudd:        VIselection:");   Serial.println(""); } void loop() {   float V = (30.00*analogRead(A0))/1024.00;   //These are what I use to read the voltage output of my power supply. I will have a voltage divider on the output,   float A = (15.000*analogRead(A1))/1024.000; //to limit the voltage range from 0-30V to 0-5V. Same concept goes for the current measurement.   int dudd  = digitalRead(7);//   RS    = digitalRead(6);//RS stands for "Read/set"   setVI = digitalRead(7);//VI is stands for "Current/Voltage set"   UP    = digitalRead(8);//UP is simply a button used to set voltage & current   DOWN  = digitalRead(9);//DOWN is simply a button used to set voltage & current     if(presetVI == LOW && setVI == HIGH){VIselection = -VIselection;}   if(preRS    == LOW && RS    == HIGH){READorSET   =   -READorSET;}     Serial.print("\t        ");  // prints an inital space.     Serial.print(RS);            // prints the RS reading. It should be '1' when pin 7 is HIGH.     Serial.print("\t        ");     Serial.print(READorSET);     // prints the READorSET reading. This should only change when the RS button is pressed.     Serial.print("\t        ");     Serial.print(setVI);         // prints the setVI reading. It should be '1' when pin 7 is HIGH.     Serial.print("\t");     Serial.print(dudd);         // prints the setVI reading. It should be '1' when pin 7 is HIGH.     Serial.print("\t        ");     Serial.println(VIselection); // prints the VIselection reading. This should only change when the setVI button is pressed.         //if(presetVI == LOW && setVI == HIGH && READorSET == 1) {READorSET = -READorSET; VIselect = -VIselect;}      // This line of code just makes so that when I need to go from the voltage read screen to      // the set mode, I can just press the VIselect button. It just makes things more intuitive, but could be      // causeing the error, so I nulled it. I also nulled it out another portion that will keep the voltage or      // current setting the same when using the VI buttton to select the set mode. (otherwise it has to be      // double pressed to return to, say, the current setting, if that is where you left off.)   if(UP == HIGH && DOWN == LOW && VIselection == -1){if(Aset <= 10.00) {Aset += 0.05;}}   if(DOWN == HIGH && UP == LOW && VIselection == -1){if(Aset >= 0.10) {Aset -= 0.05;}}     if(UP == HIGH && DOWN == LOW && VIselection == 1) {if(Vset <= 30.00) {Vset += 0.05;}}   if(DOWN == HIGH && UP == LOW && VIselection == 1) {if(Vset >= 0.05) {Vset -= 0.05;}}     if (RS == HIGH){digitalWrite(13, 1);}   if (RS == LOW){digitalWrite(13, 0);} //============================================================================================================//   if (READorSET == 1){      //this is the defualt screen, and shows the output voltage and current.     lcd.clear();              lcd.setCursor(0, 0);     lcd.print("VOLTAGE:");     lcd.setCursor(0, 1);     lcd.print("CURRENT:");     lcd.setCursor(10, 0);     lcd.print(V);     lcd.setCursor(15, 0);     lcd.print("V");     lcd.setCursor(10, 1);     lcd.print(A);     lcd.setCursor(15, 1);     lcd.print("A");   }   if (READorSET == -1){   // This is the portion of the code allowing me to set the current and voltage     lcd.clear();          // using the up/down buttons.       if (VIselection == -1){         lcd.setCursor(0, 0);         lcd.print("  SET CURRENT:");         lcd.setCursor(5, 1);         lcd.print(Aset);         lcd.print("A ");       }       if(VIselection == 1){         lcd.setCursor(0, 0);         lcd.print("  SET VOLTAGE:");         lcd.setCursor(5, 1);         lcd.print(Vset);         lcd.print("V ");       }   } //============================================================================================================//   presetVI = setVI; // At the end of each loop, the current variable settings that were used are set equal   preRS = RS;       // to the 'pre' versions of the code. This allows me to basically measure the when                     // the button is initially pressed, and/or released. Using this method with the delay()                     // function, however, is a bit buggy, but I did have it working well enough before. If you                     // tap the button too quickly. You almost have to hold it for a split second. If you                     // know a better, simpler way of doing this, please tell me, thank you.                       delay(80);        // The delay helps stabilize the reading on the LCD, but if it is too large, than the                     // refresh rate suffers, and the buttons respond slower. However, setting too low will                     // cause the reading on the display to change so rapidly, it is illegible. }

Question by -max-    |  last reply


How to program the XS3868 bluetooth audio module through arduino?

Hello, I have a few of these xs3868 bluetooth audio modules that I used in some speaker systems I built for myself, but now one of my friends wants me to build him a custom speaker with a custom bluetooth device name and passcode. So I thought, ok, I read a little about programming with the AT commands but never tried it before, so I hooked up a board to 3.3 and gnd of the arduino like I usually do to check before soldering everything, my phone connected with no problem. So next I turned off my phone's bluetooth so it wouldn't mess with the chip while programming it and connected the rx and tx pins of the board to tx and rx respectively. I also made the following adjustments in the arduino serial interface that I remember reading somewhere: No Line Ending, and 9600 baud rate. Plugged in in to the tx and rx of the arduino board with at mega chip removed and had no luck getting any response from the chip, I switched baud rate to all of the different baud rates available with no success, the only effect the chip has on the serial interface is that when the power cord slipped and I plugged in back in with rx, tx and the usb cable still connected it output a few seemingly random characters while (I'm assuming) the chip was booting up, at 115200 baud rate the characters were a "u" with two dots over it and a combination lowercase "b" and "p" (for some reason I can't copy/paste it). It only outputs these characters when one of the power wires is reconnected after being disconnected (I have a bunch of these so if I fry one it's no big deal). I tried connecting my phone again after a while and it worked, checked the wires with my multimeter and both are connected and neither is shorted to any other pins and switching rx/tx does nothing to fix the problem either. I have a usb to serial coming in the mail soon hopefully but my friend was hoping this could be finished sooner than it would arrive so any help would be greatly appreciated. Edit: Is it possible that the module could have a rs232 interface, rather than a ttl interface? I've heard that arduino only uses ttl and that I'd need another adapter to get to rs232 since my computer doesn't have that kind of serial interface.

Question by LazyH    |  last reply


Sequential Loops for Pin Activation?

Hi, I am starting with Arduino and I am in need of some help. I am trying to sequentially activate 5 pins. I need each pin to be active for 20 seconds in a PWM manner. During their active period I want an arduino sensor to read out the signals emmited by each pin effector. So far I have no problems with the PWM or sensing module code. However I am not able to find how to correctly sequentially activate the pins. I used millis(), etc, but so far I was able to only activate / read the signals from the first pin effector. The sketch doesn´t proceed to the 2nd --- pins. I really very much appreciate your help....Here goes the code so far... const int greenPin = 11; const int redPin = 10; const int irPin = 5; const int bluePin = 6; const int yellowPin = 9; const int outputLDR = 12; const int ldrSensor = A0; int brightness = 0; int increment = 1; int readingoutputLDR = 0; void setup() {   pinMode(greenPin, OUTPUT);   pinMode(redPin, OUTPUT);   pinMode(irPin, OUTPUT);   pinMode(bluePin, OUTPUT);   pinMode(yellowPin, OUTPUT);   Serial.begin(9600);     setup_parallax(); } void loop() { digitalWrite(outputLDR, HIGH); readingoutputLDR = analogRead(ldrSensor); while (millis()<5000)                 {                                       if(brightness > 255)                    {                     increment = -1; // count down after reaching 255                    }                    else if(brightness < 1)                    {                    increment = 1; // count up after dropping back down to 0                    }                    brightness = brightness + increment;                                                        analogWrite(greenPin, brightness); digitalWrite(redPin, LOW); digitalWrite(irPin, LOW); digitalWrite(bluePin, LOW); digitalWrite(yellowPin, LOW);                    Serial.print("Reading Green"); parallax_output();                                     } delay(1); while (millis()<5000)                 {                                       if(brightness > 255)                    {                     increment = -1; // count down after reaching 255                    }                    else if(brightness < 1)                    {                    increment = 1; // count up after dropping back down to 0                    }                    brightness = brightness + increment;                    delay(1);                    digitalWrite(greenPin, LOW); analogWrite(redPin, brightness); digitalWrite(irPin, LOW); digitalWrite(bluePin, LOW); digitalWrite(yellowPin, LOW);                   Serial.print("Reading Red"); parallax_output();                                  }   while (millis()<5000)                 {                                       if(brightness > 255)                    {                     increment = -1; // count down after reaching 255                    }                    else if(brightness < 1)                    {                    increment = 1; // count up after dropping back down to 0                    }                    brightness = brightness + increment;                    delay(1);                    digitalWrite(greenPin, LOW); digitalWrite(redPin, LOW); analogWrite(irPin, brightness); digitalWrite(bluePin, LOW); digitalWrite(yellowPin, LOW);                     Serial.print("Reading IR"); parallax_output();                                  } while (millis()<5000)                 {                                       if(brightness > 255)                    {                     increment = -1; // count down after reaching 255                    }                    else if(brightness < 1)                    {                    increment = 1; // count up after dropping back down to 0                    }                    brightness = brightness + increment;                    delay(1);                    digitalWrite(greenPin, LOW); digitalWrite(redPin, LOW); digitalWrite(irPin, LOW); analogWrite(bluePin, brightness); digitalWrite(yellowPin, LOW);                    Serial.print("Reading Blue"); parallax_output();                                  } while (millis()<5000)                 {                                       if(brightness > 255)                    {                     increment = -1; // count down after reaching 255                    }                    else if(brightness < 1)                    {                    increment = 1; // count up after dropping back down to 0                    }                    brightness = brightness + increment;                    delay(1);                    digitalWrite(greenPin, LOW); digitalWrite(redPin, LOW); digitalWrite(irPin, LOW); digitalWrite(bluePin, LOW); analogWrite(yellowPin, brightness);                   Serial.print("Reading Yellow"); parallax_output();                                  } } void parallax_output() {                    Serial.print("DATA,DATE,TIME,");                                                                Serial.println(readingoutputLDR);                    } void setup_parallax() {     Serial.println("CLEARDATA");     Serial.println("LABEL,Date,Time,Green Response, Red Response, IR Response, Blue Response, Yellow Response"); }

Question by aureta    |  last reply


Why?: Contest, Finalists, OAE, and... WHAT?

EDIT: This has turned out to be a really long post. Please see the top comment if you don't want to read everything, or if you aren't a scanner (seriously...). I did my best to stop my longforumtopicisitis disease... I don't really know how to write this "topic". I know I'm not the only one that's a bit upset about it. I'll do my best to keep it short, but if you might get pretty confused if you don't read (almost) everything. I would really like to hear your 100% HONEST opinion. I am looking for criticism. Don't worry if your response sounds harsh. Thank you. ------------------------------------------------------------------------ Instructables member OAE has posted several forum topics about contest winners in the past months. I understand the fact that he is annoyed some Instructables that win in contests aren't original, aren't documented very well, and lack pictures. It does bug me a bit when these types of Instructables win, but I guess that there's normally a reason for that, since most contests don't lack entries... He also mentioned the fact that he was pretty annoyed about the fact that he doesn't win. I DO NOT want to insult him in any way, but even though his Instructables are fairly well documented, I wouldn't expect for one of his Instructables to be a finalist. Brooklyntonia wrote that "A paper airplane on a cutting mat doesn't scream click and vote.", and I agree. However, I seem to have the same (I think) problem with my Instructables, and I think that it has  just gotten a bit too much. I've won in 3 contest with 86 I'bles (think of that as 50, if you know what I mean...), which is why I feel a bit weird for "complaining". It's not that I publish Instructables just for winning in contests. Far from that. SOOOOOOOO MANY times in the past year, I have posted an Instructable that I was absolutely positive that would win in a contest, but it wasn't even a runner up! I have SO MANY! It would take me an hour to post half of them, but here are some: Articulating 70W Spectrum-Balanced LED Panel for the Lamps & Lighting Contest How to Make a Wooden 6" Bench-Vise for the Wood Contest The Flat-Pack Bandsaw for the Flat-Pack Contest (less than the others, though...) How to Build a Wooden Drill-Press Vise for the Hand-tools Only Contest 9 Unusual Tool Storage Methods for Your Workshop for the Living without Closets Contest Make Your Own Plywood Mallet! for the Plywood Contest World's Most Over-Engineered 14-in-1 Soldering Station! for the Leftovers Contest Please correct me if I'm wrong: These Instructable are featured, well documented, meet the contests requirements, contain well lit high quality photos, are original (90%, of course...). I "politely encourage" people to vote only in an Instructable that I think will win... I would understand not winning at all once or twice, but not even being a runner up even once? WHAT am I doing SO HORRIBLY WRONG? What discourages me even more is that even though I want to build something that I really need, I will wait for months until a contest opens, start making, spend a ton of time on the Instructable, and then I realise that I waited for so long, and my I'ble hasn't even won! Benne, however, even though we both publish somehow similar content, has mastered this somehow! If I make something, I have to type up the Instructable immediately, because my short term memory is pretty bad. I wrote about this a bit here. If I calm the excitement down, I might be able not to publish it right away, but that will just discourage me, since I will feel that I haven't accomplished anything (aka positive feedback, etc...). Then after waiting several months, I will publish the I'ble and still not win? Imagine your boss, at work, saying "Okay (your name), you've spent 10 hours working, but I'm going to pay you only next year. Oh, nevermind, we're having budget cuts. I'm not going to pay you at all" Wait, WHAT? WHY? I'm making this sound as if it's a bet, which is okay since you don't get "paid" from Instructables, but never getting anything at all is annoying. Also, publishing Instructables is not extremely addicting (A REAL one... ;)  I think I am following the contest guidelines, but not winning again, and again... Why? Is there something that I don't know? Thank you for reading!

Topic by Yonatan24    |  last reply


How can i combine these 3 codes?i'm completely new to arduino ?

Code 1: Ultrasonic sensor and LCD I2C Display #include #include #include #include #define I2C_ADDR 0x3F // <<- Add your address here. #define Rs_pin 0 #define Rw_pin 1 #define En_pin 2 #define BACKLIGHT_PIN 3 #define D4_pin 4 #define D5_pin 5 #define D6_pin 6 #define D7_pin 7 #define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor. #define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor. #define MAX_DISTANCE 500 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm. NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance. LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); void setup() { lcd.begin (16,2); // <<-- our LCD is a 20x4, change for your LCD if needed // LCD Backlight ON lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); lcd.home (); // go home on LCD lcd.print("Obst. distance"); } void loop() { unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS). unsigned int cm = sonar.convert_cm(uS); // Convert into centimeters lcd.setCursor (0,1); // go to start of 2nd line lcd.print(" Distance:"); lcd.setCursor (0,3); // go to start of 4th line lcd.print(": "); lcd.print(cm); lcd.print(" cm "); delay(500); } code 2: PIR sensor with buzzer // Uses a PIR sensor to detect movement, buzzes a buzzer // more info here: http://blog.makezine.com/projects/pir-sensor-arduino-alarm/ // email me, John Park, at jp@jpixl.net // based upon: // PIR sensor tester by Limor Fried of Adafruit // tone code by michael@thegrebs.com int ledPin = 13;                // choose the pin for the LED int inputPin = 2;               // choose the input pin (for PIR sensor) int pirState = LOW;             // we start, assuming no motion detected int val = 0;                    // variable for reading the pin status int pinSpeaker = 10;           //Set up a speaker on a PWM pin (digital 9, 10, or 11) void setup() {   pinMode(ledPin, OUTPUT);      // declare LED as output   pinMode(inputPin, INPUT);     // declare sensor as input   pinMode(pinSpeaker, OUTPUT);   Serial.begin(9600); } void loop(){   val = digitalRead(inputPin);  // read input value   if (val == HIGH) {            // check if the input is HIGH     digitalWrite(ledPin, HIGH);  // turn LED ON     playTone(300, 160);     delay(150);        if (pirState == LOW) {       // we have just turned on       Serial.println("Motion detected!");       // We only want to print on the output change, not state       pirState = HIGH;     }   } else {       digitalWrite(ledPin, LOW); // turn LED OFF       playTone(0, 0);       delay(300);         if (pirState == HIGH){       // we have just turned off       Serial.println("Motion ended!");       // We only want to print on the output change, not state       pirState = LOW;     }   } } // duration in mSecs, frequency in hertz void playTone(long duration, int freq) {     duration *= 1000;     int period = (1.0 / freq) * 1000000;     long elapsed_time = 0;     while (elapsed_time < duration) {         digitalWrite(pinSpeaker,HIGH);         delayMicroseconds(period / 2);         digitalWrite(pinSpeaker, LOW);         delayMicroseconds(period / 2);         elapsed_time += (period);     } } CODE 3: MQ5 LPG gas sensor int sensor=7; int gas_value; void setup() { pinMode(sensor,INPUT); Serial.begin(9600); } void loop() { gas_value=digitalRead(sensor); Serial.println(gas_value); }

Question by aaryank4    |  last reply


Official Rules, Scoochmaroo Challenge: T-Shirt Mods

PLEASE REVIEW THESE OFFICIAL RULES BEFORE ENTERING THE CONTEST.  ENTRANTS WHO ARE MINORS: YOU MUST OBTAIN THE CONSENT OF YOUR PARENT OR LEGAL GUARDIAN BEFORE ENTERING THE CONTEST. ENTRY TO THE CONTEST IS FREE AND NO PAYMENT OR PURCHASE IS NECESSARY TO ENTER OR WIN, EXCEPT FOR THE STANDARD CHARGES OF YOUR INTERNET ACCESS PROVIDER. A PAYMENT OR PURCHASE WILL NOT IMPROVE YOUR CHANCES OF WINNING. VOID WHERE PROHIBITED BY LAW. BY ENTERING THE CONTEST YOU ACKNOWLEDGE THAT YOU HAVE READ AND AGREE TO THE TERMS AND CONDITIONS OF THE INSTRUCTABLES TERMS OF SERVICE AND PRIVACY POLICY   SECTION A – SPECIFIC TERMS FOR THIS CONTEST   Sponsor. The Instructables Scoochmaroo Weekly Challenge: T-Shirt Mods (the “Contest”) is an on-line contest with skill, ability and knowledge components that is sponsored by Autodesk, Inc., a Delaware corporation having its principal office at 111 McInnis Parkway, San Rafael, CA 94103, USA (“Sponsor”), in connection with the Instructables service and website, www.instructables.com, (the “Sponsor Site”). The Contest is co-sponsored by the company or companies listed here, if any (each, a “Co-Sponsor”): None. The Contest is governed by these Official Rules (these “Rules”). For any questions regarding the Contest, the Sponsor may be contacted by email at [service@instructables.com] or by phone at (01-510-473-7626) or by mail at the address identified in Section B.18 (“Winner’s List; Mailing List”) below. Overview; Object of the Contest. The object of the Contest is to share a tee shirt modification that meets the Criteria (as described in Section A.8 [“Judging”] below) and are submitted in accordance with the format, content and other requirements identified in Section A.5 (“How to Enter”) below. All currency value references in these Official Rules are to United States Dollars, Euros, and British Pounds Sterling as indicated. Eligibility. THE CONTEST IS OPEN ONLY TO NATURAL PERSONS WHO, AT THE TIME OF ENTRY, ARE REGISTERED MEMBERS OF THE SITE, WHO ARE AT LEAST FOURTEEN (14) YEARS OLD AND ARE LEGAL RESIDENTS OF THE 50 UNITED STATES (INCLUDING THE DISTRICT OF COLUMBIA BUT EXCLUDING PUERTO RICO), CANADA (EXCLUDING THE PROVINCE OF QUEBEC, CANADA), UNITED KINGDOM, AUSTRALIA, BELGIUM, CHINA, THE NETHERLANDS. If on the Start Date you are a “minor,” meaning that you are under the age of majority in your jurisdiction (currently 18 or 19 in most U.S. states, and provinces of Canada and Australia; 18 in Belgium, China, and, for the UK, 16 in Scotland and 18 in most other parts of the United Kingdom), you must obtain permission from your parent or legal guardian, and your parent or legal guardian must consent to be bound by these Rules as if he or she were an entrant, before you submit an entry. Sponsor reserves the right to require minors to submit proof of parental/guardian permission and consent to these Rules at any time, without which they may be immediately disqualified from the Contest. Certain individuals are excluded from eligibility to enter or win, as described in Section B below. No purchase or payment is necessary to enter the Contest, and no purchase or payment, including choosing to purchase any “Instructables Pro” or other paid membership to the Sponsor Site will improve your chances of winning in any way. Deadline. The Contest begins at 12:00 a.m. Pacific Standard Time (PT)/8:00 a.m. GMT/9:00 a.m. CEST/4:00p.m. CST (China Standard Time), on June 18, 2012 (the “Start Date”). Entries for the Contest must be received by Sponsor by no later than 11:59 p.m. PT July 1, 2012 7:59am GMT/8:59 a.m. CEST/3:59 p.m. CST (China Standard Time) on July 2, 2012 (the “Deadline”). (GMT + 1 hour for Belgium, the Netherlands, GMT+ 8 hours for China). How to Enter. All entries must comply with the entry requirements identified in these Rules (including in this Section and in Section B below), as well as with any specific formatting or content requirements identified in Section A.2 above or on the "How to Enter" page https://www.instructables.com/id/Scoochmaroo-Challenge-T-shirt-Mods/ for the Contest on the Sponsor Site. It is each entrant's responsibility to ensure compliance with those requirements. To enter a new project in the Contest, follow these steps: First document your project in the photo, step-by-step, or video Instructable format. When your project is ready to be published to the Sponsor Site, visit the Sponsor Site and follow the instructions for publishing your project to the Sponsor Site.  You must be a registered user of the Sponsor Site in order to publish a project to the Sponsor Site. If you are not already a registered user of the Sponsor Site, you will be prompted to create an account on the Sponsor Site during the publication process. Please note: in some jurisdictions, the publication of your project on the Sponsor Site could materially affect rights (e.g., adversely affect patent rights), you may own in the project.  You should make your own inquiries and seek your own advice on this issue. When you have published your project to the Sponsor Site, if you have reviewed the entry requirements for the Contest, believe your project qualifies for entry, and want to enter it in the Contest, leave a comment on the Contest page, and include a link to your published Instructable. Instructable must be published during the Contest period. You may not enter the same Instructables project in more than three (3) Instructables contests in total. Projects published prior to the Start Date are not eligible for entry.  You may not register the same Instructables project in more than three (3) Instructables contests in total. Further information about entry can be found in Section B below. Winner Selection. There will be a possible 10 total winner(s) for the Contest. The winner(s) will be selected on or around July 4, 2012, and Sponsor will announce the winner(s) on or around July 4, 2012. Each winner will be awarded only the prize(s) for which that winner was selected, as described below. Prize(s). The prize(s) to be awarded in the Contest is/are as follows: Tier #1: If there are 5 entries, but no more than 9, the 2 entrants with the highests judges’ scores will receive a Singer Black Universal Sewing Machine Tote, robot t-shirt, and 1 Year Pro Membership; or Tier #2: If there are 10 entries, but no more than 19, the 4 entrants with the highests judges’ scores will receive a Singer Black Universal Sewing Machine Tote, robot t-shirt, and 1 Year Pro Membership; or Tier #3: If there are 20 entries, but no more than 29, the 6 entrants with the highests judges’ scores will receive a Singer Black Universal Sewing Machine Tote, robot t-shirt, and 1 Year Pro Membership; or Tier #4: If there are 30 entries, but no more than 39, the 8 entrants with the highests judges’ scores will receive a Singer Black Universal Sewing Machine Tote, robot t-shirt, and 1 Year Pro Membership; or Tier #5: If there are 40 or more eligible entries, the 10 entrants with the highests judges’ scores will receive a Singer Black Universal Sewing Machine Tote, robot t-shirt, and 1 Year Pro Membership. Any awarded prizes will be provided to a winner only after the winner has signed a Winner's Declaration and Release. Sponsor's current Winner's Declaration and Release for the Contest may be obtained upon request by contacting Sponsor by email at [service@instructables.com] or by phone at (01-510-473-7626) or by mail at the address identified in Section B.18 ("Winner's List; Mailing List") below. The winner(s) will be solely responsible for complying with any and all applicable federal, state, provincial, local or other statutes, laws (including, without limitation, common law, if applicable), rules and regulations relating to the prizes and for bearing any personal income, VAT, withholding taxes, customs duties, or other taxes, fees, insurance, surcharges or other costs relating to receiving, claiming or collecting any prize. Without limitation, for residents subject to tax obligations under the People's Republic of China, the winner shall be responsible for reporting his or her individual income tax generated from the prize to relevant Chinese tax authorities on his or her own and shall then submit the Sponsor a tax payment proof showing the tax is fully paid. If the winner fails to submit the afore-mentioned proof within a reasonable period of time as required by the Sponsor, the Sponsor reserves the right to disqualify the winner from entitlement to the prize. All prizes that are items or services which are subject to third party terms and conditions or restrictions, acceptance and use of the prizes are subject to all eligibility criteria, expiration dates, service or dormancy fees, and all other terms and conditions (if any) imposed by the issuer of such items or services, which are available on the Prizes page https://www.instructables.com/id/Scoochmaroo-Challenge-Cocktails/ for the Contest. Please be aware that Contest prizes may not be usable or function properly in certain countries and Sponsor has no knowledge relating to the use or functionality of such prizes in those countries. Use or operation of prizes in certain countries may require additional parts, components or adapters, and Sponsor has no knowledge of any such requirements or any responsibility for obtaining any such parts, components or adapters. In addition, certain countries may prohibit the use or operation of the prizes, in whole or in part, and Sponsor has no knowledge regarding, and shall have no responsibility for determining, whether the winner(s) are permitted to operate or use the prizes in any particular country.   The estimated retail value of each prize to be awarded in the Contest is as follows: Singer Black Universal Sewing Machine Tote, robot t-shirt, and 1 Year Pro Membership; Total retail value: 72.67 United States Dollar, 57.77 EURO, 46.40 British Pound Sterling The total estimated retail value of all prizes possibly awarded in the Contest is: 726.70 United States Dollar, 577.66 EURO, 463.96 British Pound Sterling Judging. All entries that are in compliance with all terms and conditions of these Rules will be judged on the basis of the following criteria (the "Criteria"): originality, usefulness, simplicity, and clarity of instructions, each of which will be given equal weight. Sponsor will decide who judges.  Further information on the steps and process of voting and judging can be found in Section B below. Size of Entry Pool. Winning entries will be selected by the Judges in accordance with the Criteria as described in these Rules. The chances of any entry winning a prize depend on the number of eligible entries received between the Start Date and the Deadline and the quality of that entry as compared to the other eligible entries, as evaluated by the Judges in the manner described above. Sponsor does not know in advance the number of eligible entries that will be received. The number of entries received, and the number of winners chosen, in prior contests of Sponsor, including the three (3) most recently completed contests, can be found through the "Contests" page of the Sponsor Site, which can be found here [instructables.com/contest]. The number of eligible entries for Sponsor's recently completed contests generally has ranged from approximately forty (40) to approximately six-hundred fifty (650), and generally has averaged approximately one-hundred fifty (150), but Sponsor cannot predict or guarantee any specific number of eligible entries for the Contest. SECTION B – ADDITIONAL TERMS FOR THIS CONTEST   General Conditions. By entering the Contest, each entrant agrees to abide by the terms of these Rules and by the decisions of Sponsor and the Judges, which shall be made in all cases in their sole and absolute discretion and are final and binding on all matters relating to the Contest. These Rules are a legally binding contract, with equivalent effect to a private contract between each entrant and Sponsor. The Contest is void where prohibited by law The Contest is governed by Sponsor's Terms [https://www.instructables.com/tos.html] and Privacy Policy [https://www.instructables.com/about/privacy.jsp]and other policies (collectively, the “Policies”) pertaining to the Sponsor Site, although the Rules will govern any conflict between the Rules and the Sponsor’s Terms or the Rules and the Privacy Policy. Exclusions from Eligibility. Employees of Sponsor, any Co-Sponsor, or their respective parents, subsidiaries, affiliates, partners, suppliers, or advertising or promotional agencies (including without limitation any Judges who are employees of Sponsor, any Co-Sponsor or any of their respective parents, subsidiaries, or affiliates), as well as members of their households or their immediate families (i.e., spouses, parents and children), may submit entries in the Contest, but any such entries are for information and entertainment purposes only and are not eligible to be considered for the purpose of selecting finalists or winners. Judges who are not employees of Sponsor, any Co-Sponsor or any of their respective parents, subsidiaries, or affiliates, are not eligible to enter or win, nor are members of their households or their immediate families (i.e., spouses, parents and children). Notwithstanding the foregoing, Sponsor shall have no liability to any entrant or any other person in the event that Sponsor inadvertently awards a prize to any non-eligible person(s). In addition, each entrant acknowledges and accepts that Sponsor may be prohibited by applicable law from permitting entry by or awarding a prize to any person falling into one or more of the following prohibited categories: (a) a national or resident of Cuba, Iran, Iraq, Libya, North Korea, Sudan, Syria or any other country for which trade with the United States has been prohibited or restricted by any statute, regulation, order, rule, treaty, or other law of the United States or any other applicable jurisdiction in any manner that would prevent the awarding or delivery of any prize to the entrant; (b) a person on the U.S. Table of Denial Orders, Entity List, List of Specially Designated Nationals and Blocked Persons, or any other similar list of any applicable jurisdiction, or any person affiliated with any person or entity on any such list; (c) an official or representative of any foreign government; or (d) any other person to whom the awarding or delivery of any prize would violate any applicable statute, regulation, order, rule, treaty, or other law or any of Sponsor's policies (See: https://www.instructables.com/about/privacy.jsp). If an entrant falls into any of the above prohibited categories, such entrant is not eligible to win any prizes. Entry. Multiple entries are permitted, but only one entry per entrant can win a prize in the Contest. Entrants must be registered members of the Sponsor Site to enter the Contest. Registering for a Sponsor Site membership account for purposes of entering the Contest is free of charge. Entries can be the work of more than one person, but for purposes of the Contest, each entry will belong to the “Primary Author” named in the entry, regardless of the number of contributors to that entry. For winning entries, Sponsor will award the applicable prize to the named entrant only, except in the case of a minor, to such minor’s named parent or legal guardian only unless specific consent from such parent or legal guardian to award the prize to such minor in accordance has been obtained by way of a duly signed Winner’s Declaration and Release (See Section A.7 above), and will not be responsible or liable for apportioning any prize among contributors to a winning entry. Upon submission, all entries become subject to the Policies (including without limitation the provisions regarding ownership and use of user submissions as stated in Sponsor’s Terms [https://www.instructables.com/tos.html]) and further described in Section B.15 (“Advertising and Marketing”). Notwithstanding the foregoing, entries to the Contest shall only be valid after the entry is accepted by Sponsor, and its acceptance occurs at Sponsor’s location in the United States.  Entries will not be acknowledged or returned. Entrants are permitted to modify or update an entry after submission, but are not permitted to do so after the Deadline. Entries may remain posted on the Contest page of the Sponsor Site indefinitely following the Deadline, but Sponsor reserves the right to delete entries from the Contest page after the Contest ends, in its discretion, and Sponsor reserves the right to delete entries from the Contest page and other pages of the Sponsor Site, at any time in its discretion, if such entries infringe or may infringe any third party’s rights. Entries may not be created or submitted through any software-generated, robotic, programmed, script, macro, or other automated method. Sponsor and Co-Sponsor will have no responsibility for, and will have the right to refuse in its discretion, any entries that have been tampered with, or entries that are misdirected, incomplete, non-conforming, corrupt, lost, late, or ineligible, whether due to Internet or e-mail server failure or otherwise. Proof of transmission of an entry shall not constitute proof of receipt. It is each entrant’s responsibility to keep Sponsor informed of any changes to entrant’s contact or other information during the Contest. Use of Personal Information. Registering for an account with the Sponsor Site, which is required to enter the Contest, may require each entrant to submit entrant’s name, e-mail address, age or date of birth, and other contact details, and in the case of a minor, contact details for a parent or legal guardian for purposes of obtaining proof of parental consent, if Sponsor elects to do so. For further information concerning how Sponsor handles personal information, as well as provisions on confidentiality and the cases in which Sponsor may be entitled to disclose entrant’s information to third parties or upon request of an authority, consult Sponsor’s Privacy Policy [https://www.instructables.com/about/privacy.jsp], which is incorporated herein. Additional Entry Requirements. Each entry must comply in all respects with the Policies, including without limitation all requirements for user submissions, as stated in the Terms and Conditions of Use [https://www.instructables.com/tos.html] for the Sponsor Site. Without limiting that requirement, each entry also must comply with the following: Each entry must be entirely the original work of the persons identified in the entry; If persons other than the entrant have contributed to an entry, the entrant must have the written permission from each contributor prior to submitting the entry; Entries must not have been published prior to the Start Date; Entries must not have been entered in more than two other contests of Sponsor; Entries must not contain anything that is or may be: (i) threatening, harassing, degrading or hateful; (ii) defamatory; (iii) fraudulent or tortious; (iv) obscene, indecent or otherwise objectionable; (v) deemed to cause feelings of disharmony, enmity, hatred or hostility between different religious or racial groups; (vi) protected by copyright, trademark, patents, utility models, design patents or other proprietary right without the express prior written consent of the owner of such right; or (vii) dangerous or potentially dangerous, or that would encourage dangerous behavior from viewers, such as use of explosives and/or harmful substances; or (vii) contrary to governmental policies of any country whose residents are eligible to enter the Contest. Entries must provide proper safety instructions, as applicable, such as with respect to the use of knives, cutting devices and other tools; and Entries must not contain any material that would give rise to criminal or civil liability or that encourages conduct that constitutes a criminal offense. Judging Process. The winner(s) will be determined by the Judges, who will apply the Criteria to evaluate entries. The entries with the highest score(s) will be selected as the winner(s), and the number and type of winners will be as identified in Section A above. The Judges have the right to disqualify any entry that is not in compliance with these Rules, in the Judges' discretion. In the event that a winning entry is disqualified, the next-highest scoring entry will be selected as the alternate winner.  In the event that one or more of the identified Judges is unavailable, Sponsor reserves the right to substitute Judges of comparable qualification, to be determined by Sponsor in its discretion. The Contest is entirely skill-based and contains no elements based on chance. The standards applied during the judging process focuses on assessing each entry’s properties. By the mere submission of an entry, an entrant acquires no automatic right to be awarded a prize, nor any other right except for the right to have such entry reviewed and evaluated subject to these Rules.   Prize Terms. All values are stated in United States Dollars, Euros and British Pounds Sterling, as indicated. If a stated prize is unavailable, Sponsor has the right to substitute one or more items of equal or greater value, in its discretion. No prize is, and the winner(s) have no right to claim that any prize is, exchangeable, transferable, or redeemable for cash. The winner(s) will be solely responsible for all expenses related to the receipt and use of all prize(s) other than those expenses expressly included in the description of the prize(s) in Section A above. The winner(s) will be solely responsible for complying with any and all applicable statutes, laws (including, without limitation, common law, if applicable), rules and regulations and for bearing any personal income, VAT, withholding taxes, customs duties, or other taxes, fees, insurance, surcharges or other costs relating to receiving, claiming or collecting any prize.   Winner(s) are hereby informed of the liability to pay all taxes on the prize(s) received; such taxes shall be paid by the winner(s). Each winner shall be responsible for reporting his or her individual income tax generated from the prize to relevant tax authorities on his or her own and, for residents subject to tax obligations on the prize by any country, shall promptly submit to Sponsor a tax payment proof showing that such tax has been fully paid. If the winner fails to submit such proof within a reasonable period of time as required by Sponsor, Sponsor reserves the right to disqualify the winner from entitlement to the prize and the winner shall be deemed to have waived his or her right to claim the prize and shall be further obligated, upon Sponsor’s request, to return the prize to Sponsor at his or her own cost. THE PRIZE(S) WILL BE GIVEN AWAY BY SPONSOR AND ANY CO-SPONSOR(S) “AS IS.” SPONSOR AND ANY CO-SPONSORS DO NOT MAKE, AND EXPRESSLY DISCLAIM, ANY WARRANTY, WHETHER EXPRESS, IMPLIED, OR STATUTORY, REGARDING ANY PRIZE OR PORTION THEREOF, INCLUDING WITHOUT LIMITATION ANY IMPLIED OR STATUTORY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, OR NON-INFRINGEMENT. SOME JURISDICTIONS MAY NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, CONSUMER GUARANTEES AND SIMILAR RIGHTS, IN WHICH CASE SUCH EXCLUSION SHALL APPLY ONLY TO THE EXTENT PERMITTED BY APPLICABLE LAW IN THE RELEVANT JURISDICTION. WITHOUT LIMITATION, TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, ALL WARRANTIES AND REPRESENTATIONS, IN RELATION TO THE PRIZES, WHETHER EXPRESS OR IMPLIED BY STATUTE, LAW (INCLUDING, WITHOUT LIMITATION, COMMON LAW, IF APPLICABLE), RULE, REGULATION, OR OTHERWISE, ARE HEREBY EXCLUDED. Announcement; Award of Prize(s). The winner(s) will be notified by e-mail within seven (7) days of selection. The winner(s) (and, if a winner is a minor, the winner’s parent or legal guardian) may be required to sign a Winner’s Declaration and Release which includes a declaration of eligibility, grant of publicity rights and a liability release, to the extent not prohibited by law, prior to receipt of a prize. The prize(s) will be awarded by way of delivery to Winner’s designated valid delivery address set forth on the Winner’s Declaration and Release. Unless otherwise specified in Section A, and provided that direct shipment costs by mail or parcel post (expressly excluding import duties and other duties or taxes, which are the winner’s sole responsibility) to Winner’s designated valid delivery address shall be borne by Sponsor, provided, however, if delivery is declined or fails by reason of winner’s failure to timely accept receipt or pay appropriate import duties and other duties or taxes) then the winner will be deemed to have declined acceptance of the prize and Sponsor reserves the right to reclaim the prize whereupon the prize will be returned to Sponsor and winner will no longer be eligible to receive the prize. The winner(s) may be required to provide Sponsor with a social security number, taxpayer identification number, or other identification or account number (if applicable) for tax purposes, and will provide Sponsor with all other information as may be required for Sponsor to comply with all applicable laws in connection with the award of any prize(s) to the winner(s). The winner(s) also may be required to provide Sponsor with proof that he or she is the Authorized Account Holder of the e-mail address associated with the winning entry. An “Authorized Account Holder” is the natural person who is assigned to an e-mail address by an Internet access provider or other organization responsible for assigning e-mail addresses to the domain associated with an e-mail address. In the event of a dispute, an entry will be deemed to have been submitted by the Authorized Account Holder of the e-mail address submitted at the time of entry. Failure to respond to a winner announcement, or return any required declarations or releases within fourteen (14) days (or any longer time specified by Sponsor in the applicable winner announcement) or to comply with any of the foregoing may result in disqualification and the selection of an alternate winner. It is Sponsor’s policy to assist U.S. government employees in meeting their obligations under their standards of ethical conduct; any prize(s) won in violation of those Standards should not be accepted and should be returned at Sponsor’s expense or destroyed. Without limitation, Sponsor shall not be liable for any failure to deliver any prizes due to any winner’s failure to accept delivery, to meet any of his or her obligations hereunder or due to the submission of any false, inaccurate or misleading information. Representations. By entering the Contest, each entrant represents and warrants that: (a) the entrant meets all eligibility requirements of the Contest; (b) in entering and participating in the Contest, the entrant has complied and will comply in all respects with these Rules, the Policies, and all applicable statutes, laws (including, without limitation, common law, if applicable), rules and regulations; and (c) the information provided in the entrant’s entry, including without limitation all contact information, is true, accurate, and complete in all respects. Assumption of Risk. By taking any action to create an entry for the Contest, each entrant, on his or her own behalf and on behalf of his or her personal representatives, heirs, executors, and assigns, acknowledges and agrees that: (a) ENTRANT AND HIS OR HER PERSONAL REPRESENTATIVES, HEIRS, EXECUTORS, AND ASSIGNS HAVE THE SOLE RESPONSIBILITY FOR THE CREATION OF THE ENTRY, WHICH IS DESIGNED AND CREATED BY THE ENTRANT FOLLOWING HIS OR HER OWN DECISION AND INITIATIVE DEPENDINGG ON THE WAY, IN HIS OR HER SOLE DISCRETION ENTERANT DECIDES TO CREATE SUCH ENTRY, AND EVEN THOUGHT THE CONTEST DOES NOT REQUIRE OR OTHERWISE ENCOURAGE DANGEROUS BEHAVIOR, THERE MAY BE DANGER AND RISK OF BODILY INJURY, DEATH, OR PROPERTY DAMAGE INVOLVED IN CREATING AN ENTRY; (b) THESE RISKS AND DANGERS MAY ARISE FROM FORESEEABLE OR UNFORESEEABLE CAUSES; (c) SUCH ENTRANT AND HIS OR HER PERSONAL REPRESENTATIVES, HEIRS, EXECUTORS, AND ASSIGNS ASSUME ALL RISKS AND RESPONSIBILITY FOR ANY PERSONAL INJURY, DEATH, PROPERTY DAMAGE, OR OTHER LOSS ARISING OUT OF THE CREATION OF ANY ENTRY, WHETHER CAUSED BY NEGLIGENCE OR ANY OTHER CAUSE; and (d) Subject to applicable law, such entrant and his or her personal representatives, heirs, executors, and assigns are relinquishing any and all rights he, she, or they now have or may have in the future to sue or take any other action against Sponsor, any Co-Sponsor, the prize manufacturers, any other entities involved in the administration of the Contest, each of their respective parents, subsidiaries, and affiliates, and each of their respective officers, directors, employees, agents, and representatives (the “Sponsor Parties”) on the basis of any injury, death, damage, or other loss that may be suffered arising from any action taken in the creation of any entry, including but not limited to claims based on allegations of negligence by any of the Sponsor Parties or use of any machinery or materials. Without limitation, Sponsor Parties shall have no liability to any entrant or any other person in the event the entry or any acts or omissions of the entrant violates any of these Rules. Release. To the maximum extent permitted by law, by entering the Contest, each entrant releases and holds harmless the Sponsor Parties from any and all responsibility, liability, damages (including, without limitation, direct, indirect, incidental, consequential, punitive, statutory, and other damages), losses, costs, or expenses of any kind arising out of or relating to: (a) entry or participation in the Contest, including but not limited to disputes among individuals claiming to have contributed to any winning entry; (b) any violation by the entrant of these Rules, the Policies, or applicable laws; (c) misappropriation, infringement, or other violation of any copyright, trademark, patent, trade secret, right of publicity, privacy, or other legal or contractual right of any person attributable to entrant or any entry submitted by entrant; (d) the acceptance, possession, receipt, or use of any prize or any item purchased with any prize (e.g., if the prize includes a gift card); (e) any entries or votes that have been tampered with or that are misdirected, incomplete, non-conforming, corrupt, lost, late, or ineligible; (f) any problems or technical malfunctions (including but not limited to errors, omissions, interruptions, deletions, defects, or delays in operation or transmission) of any computer, telephone, modem, cable, satellite, network, hardware, online system, server, software, or other equipment or provider, including any incorrect, incomplete, garbled or jumbled information resulting therefrom; (g) any Internet traffic congestion or website accessibility or delays; (h) printing or typographical errors in any Contest-related materials; or (i) any other technical or human error that may occur in connection with the Contest (the “Causes”).  If anyone makes any claim against any of the Sponsor Parties arising out of or relating to any of the Causes attributable to the entrant, the entrant will pay for any damages, losses, liabilities, costs, penalties, and expenses, including without limitation attorneys’ and experts’ fees and costs, incurred in connection with such claim. WITHOUT LIMITING THE GENERALITY OF THE FOREGOING, THE SPONSOR PARTIES SHALL NOT BE LIABLE FOR ANY LOST PROFITS OR ANY SPECIAL, INCIDENTAL, INDIRECT, PUNITIVE, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE CONTEST, HOWSOEVER CAUSED, WHETHER ARISING IN STATUTE, TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) CONTRACT, OTHER LEGAL THEORY OR OTHERWISE, AND ALL SUCH DAMAGES ARE HEREBY DISCLAIMED AND EXCLUDED. SOME JURISDICTIONS MAY NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR DAMAGES AND OTHER LIABILITY (INCLUDING INCIDENTAL OR CONSEQUENTIAL DAMAGES) IN WHICH CASE SUCH LIMITATION OR EXCLUSION SHALL APPLY ONLY TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, RULE, STATUTE OR REGULATION IN THE RELEVANT JURISDICTION. NOTHING IN THESE TERMS EXCLUDE LIABILITY FOR FRAUD, OR FOR PERSONAL INJURY OR DEATH CAUSED BY NEGLIGENCE TO THE EXTENT SUCH EXCLUSION IS PROHIBITED BY APPLICABLE LAW. Misconduct. Sponsor reserves the right, in its discretion, to disqualify any entrant who: (a) tampers with the entry or voting process, the operation of the Contest, the Sponsor Site, or affiliated websites; (b) acts in an unsporting or disruptive manner, or with intent to annoy or harass another person; or (c) is otherwise in violation of these Rules, the Policies, or any applicable laws. Termination. Sponsor reserves the right to suspend, modify, or terminate the Contest at any time for any reason, in its discretion, including without limitation in the event of fraud, abuse, tampering, technical, administrative, financial, or other difficulties. In such cases, Sponsor will post a notice on the Contest page of the Sponsor Site. Should the Contest terminate prior to selection of the winner, Sponsor will announce an alternate means of awarding the prize on the Contest page of the Sponsor Site. Any entrant may withdraw from the Contest at any time by contacting Sponsor by email at [service@instructables.com] or by phone at (01-510-473-7626) or by mail at the address identified in Section B.18 (“Winner’s List; Mailing List”) specifying the name of this Contest and any other relevant information.   Advertising and Marketing. By entering the Contest, and in consideration of Sponsor’s potential review and evaluation of his or her entry, each entrant grants to Sponsor the non-exclusive right to use his or her entry as provided in the Policies, including without limitation the provisions of the Terms and Conditions of Use [https://www.instructables.com/tos.html] regarding ownership and use of user submissions. WITHOUT LIMITING THE FOREGOING, TO THE MAXIMUM EXTENT PERMITTED BY LAW, BY ENTERING THE CONTEST, EACH ENTRANT CONSENTS, AND WARRANTS THAT IT HAS OBTAINED THE LEGALLY-BINDING WRITTEN CONSENT OR OTHER LEGALLY BINDING AUTHORIZATION (INCLUDING WITH REGARD TO THE USE AND MANAGEMENT OF COPYRIGHTS IN ALL CREATED CONTENT) OF EVERY CONTRIBUTOR TO THE ENTRY (INDIVIDUALS WHOSE NAME, LIKENESS, PROPERTY, RESULTS AND PROCEEDS APPEAR IN THE ENTRY), TO THE USE BY SPONSOR, ANY CO-SPONSOR, OR ANY THIRD PARTY CHOSEN BY SPONSOR OR ANY CO-SPONSOR, OF ANY AND ALL INFORMATION (INCLUDING PERSONAL INFORMATION), DRAWINGS, TEXT, PHOTOS, IMAGES, VOICES, VIDEOS, OR OTHER MATERIAL CONTAINED IN AN ENTRY OR OTHERWISE PROVIDED BY SUCH ENTRANT RELATED TO THE CONTEST FOR ADVERTISING AND MARKETING PURPOSES. Otherwise, each entrant retains whatever rights it may have in each entry to the extent provided in the Policies. The Sponsor, at its discretion, may require entrants to provide evidence of such written consents or other legally binding authorization. To the maximum extent permitted by law, by accepting a prize, a winner consents on his or her own behalf, to the print and online publication of the winner’s user name, stated country of residence and winning entry as part of the official winner’s list on the Instructables Site (and to submit this information, along with the winner’s first and last name, address , phone, email or other contact information to governmental agencies if required by applicable laws) without additional compensation other than the consideration specified in this Section 15 (Advertising and Marketing) for the entire protection term of the rights concerned and for all methods and means of exploitation. Each entrant and any other contributor whose personal information is being so used by Sponsor may request access to his or her personal information held by Sponsor and that Sponsor correct the data if it is inaccurate or delete the data if Sponsor is not required to retain it by law or for legitimate business purposes. Access, correction, deletion requests or withdrawal of consents can be made by contacting Sponsor by email at [service@instructables.com] or by phone at (01-510-473-7626) or by mail at the address identified in Section B.18 (“Winner’s List; Mailing List”), however, no consents will apply retroactively to any entrant’s personal information used prior to Sponsor’s receipt of any consent withdrawal. Other than as set forth herein, Sponsor will treat any personal information supplied by entrants in connection with the Contest in accordance with Sponsor’s Privacy Policy [https://www.instructables.com/about/privacy.jsp], as modified by these Rules. Governing Law; Dispute Resolution. By entering the Contest, entrants agree that these Rules will be governed by and construed in accordance with the laws of (a) Switzerland if the entrant’s principal place of residence is in a country in Europe, Africa or the Middle East, (b) Singapore if the entrant’s principal place of residence is in a country in Asia, Oceania or the Asia-Pacific region, or (c) the State of California (and, to the extent controlling, the federal laws of the United States) if the entrant’s principal place of residence is in a country in the Americas (including the Caribbean) or any other country not specified in this Section 16 (Governing Law; Dispute Resolution); provided, however, that in respect of all claims, actions and disputes brought by any of the Sponsor Parties, these Rules and shall be governed by and construed in accordance with the laws of the State of California (and, to the extent controlling, the federal laws of the United States). The laws of such jurisdictions shall govern without reference to the conflicts-of-laws rules thereof. The UN Convention on Contracts for the International Sale of Goods and the Uniform Computer Information Transaction Act shall not apply to (and are excluded from the laws governing) these Rules. In addition, by entering the Contest, entrants agree that any claim, action or dispute arising under or relating to this Agreement will be brought exclusively in (and the parties will be subject to the exclusive jurisdiction of) the Superior Court of the State of California, County of Marin, or the United States District Court for the Northern District of California in San Francisco, except that (other than with respect to claims, actions or disputes brought by any of the Sponsor Parties) if the entrant’s principal place of residence is in (a) a country in Europe, Africa or the Middle East, any such claim or dispute will be brought exclusively in (and the parties will be subject to the exclusive jurisdiction of) the courts of Switzerland, or (b) a country in Asia, Oceania or the Asia-Pacific region, any such claim or dispute will be brought exclusively in (and the parties will be subject to the exclusive jurisdiction of) the courts of Singapore. By entering the Contest, each entrant submits to the jurisdiction of those courts and waives any objection to those courts, whether on the basis of jurisdiction, venue, inconvenience of the forum, or otherwise.  Notwithstanding anything to the contrary, nothing will prevent any of the Sponsor Parties from bringing an action for infringement of intellectual property rights in any country where such infringement is alleged to occur. Miscellaneous. If any part of these Rules is held by a court of competent jurisdiction to be invalid, illegal, or otherwise unenforceable, such part will be modified by such court to the minimum extent necessary to make it enforceable while preserving to the maximum extent possible the original intent of and the remaining parts of these Rules will remain in full force and effect. Nothing contained herein or in any of the Contest related materials should be construed as an endorsement by Sponsor of any Co-Sponsor, or of Sponsor or any Co-Sponsor of any third party, product, or service. Notwithstanding anything to the contrary, Sponsor may decline to process requests that are unreasonable or unreasonably repetitive. Winner’s List; Mailing List. The user name(s) and entries of the Contest winner(s) will be posted on the Contest page https://www.instructables.com/id/Scoochmaroo-Challenge-T-shirt-Mods/ of the Sponsor Site, within fourteen (14) days of the Deadline. In addition, the names of the winner(s) may be obtained by sending a written request and a self-addressed, stamped envelope to the below address (mailed requests must include the words “WINNER’S LIST” and the full name of the Contest prominently in the first line of the address): Instructables 82 2nd St. San Francisco, California 94105 USA or by contacting Sponsor by email at [service@instructables.com] or by phone at (01-510-473-7626) or by mail at the address identified in above. All requests must include the words “WINNER’S LIST” and the full name of the Contest prominently in the subject line or in the voicemail, as the case may be.   All such requests must be received within six (6) months of the Deadline. Sponsor’s telephone number for Contest purposes is (01-510-473-7626). Entrants who opt to join Sponsor’s electronic mailing list agree to be contacted by email by Sponsor. Requests for removal from Sponsor’s mailing list may be made as instructed in any such email, or by sending a written request and a self-addressed, stamped envelope to “Instructables Mailing List” at the above address, by calling the above telephone number, or as otherwise indicated on the Sponsor Site. Residents of Vermont may omit return postage on winner’s list and mailing list requests.   © 2012 Autodesk, Inc. All rights reserved. INSTRUCTABLES is a registered trademark or trademark in the United States of Autodesk, Inc. Other brands may be trademarks of their respective owners.

Topic by scoochmaroo  


HOW TO SHOW DYNAMIC GPS DATA AND AUTO REFRESH PAGE ON WEB BROWSER ?

Hello, I'm using ESP8266 WIFI module and GPS module. I have connected to ARDUINO UNO R3 board to read the GPS coordinates and transmit them to webpage using ESP8266 WiFi module connected to router. In my code the page change only when I press F5 (refresh) , and so I can see the change of Coordinates. I want to see the changing results dynamically with out refreshing the webpage. what to I need to do /change in order that it will change automatically? please check my code here or in the attachment  and suggest me the changes. Thanks in advance. CODE: // code starts #include #include SoftwareSerial Serial1(2,3);     //   ESP8266 RX pin 2, TX pin 3. SoftwareSerial gps(11, 10);       //   GPS RX pin 10, TX pin 11.   boolean No_IP=false; String IP=""; String webpage=""; int i=0,k=0; int  gps_status=0; String name=" Name: XXXXXXXX ";   //22 String date="DATE: DD MM YYYY";     //21 String number=" Vehicle No.: ABC 0000";//29 String cordinat="Coordinates:";          //17 String latitude=""; String logitude="";                       String gpsString=""; char *test="$GPGGA"; void check4IP(int t1) {   int t2=millis();   while(t2+t1>millis())   {     while(Serial1.available()>0)     {       if(Serial1.find("WIFI GOT IP"))       {         No_IP=true;       }     }   } } void get_ip() {   IP="";   char ch=0;   while(1)   {     Serial1.println("AT+CIFSR");     while(Serial1.available()>0)     {       if(Serial1.find("STAIP,"))       {         delay(1000);         Serial.print("IP Address:");         while(Serial1.available()>0)         {           ch=Serial1.read();           if(ch=='+')           break;           IP+=ch;         }       }       if(ch=='+')       break;     }     if(ch=='+')     break;     delay(1000);   }   Serial.print(IP);   Serial.print("Port:");   Serial.println(80);   delay(1000); } void connect_wifi(String cmd, int t) {   int temp=0,i=0;   while(1)   {     Serial.println(cmd);     Serial1.println(cmd);     while(Serial1.available()>0)     {       if(Serial1.find("OK"))       {       i=8;       }     }     delay(t);     if(i>5)     break;     i++;   }   if(i==8)   {     Serial.println("OK");   }   else   {   Serial.println("Error");   }   delay(1000); } void setup() {   Serial1.begin(9600);   Serial.begin(9600);   delay(1000);   connect_wifi("AT",1000);   connect_wifi("AT+CWMODE=3",1000);   connect_wifi("AT+CWQAP",1000);    connect_wifi("AT+RST",5000);   check4IP(5000);   if(!No_IP)       {         Serial.println("Connecting Wifi....");         connect_wifi("AT+CWJAP=\"MountPointTech\",\"MpTl2013\"",7000);   //AT+CWJAP="wifi_username","wifi_password"       }       else         {         }       Serial.println("Wifi Connected");       get_ip();       delay(2000);       connect_wifi("AT+CIPMUX=1",100);       connect_wifi("AT+CIPSERVER=1,80",100);       Serial1.end();       Serial.println("Waiting For GPS");       Serial.println("     Signal    ");       delay(2000);       gps.begin(9600);       get_gps();       show_coordinate();       gps.end();       Serial1.begin(9600);       delay(2000);      Serial.println("GPS is Ready");       delay(1000);       Serial.println("System Ready.."); } void loop() {   k=0;   Serial.println("Please Refresh Ur Page");   while(k<1000)   {     k++;    while(Serial1.available())    {     if(Serial1.find("0,CONNECT"))     {       Serial1.end();         gps.begin(9600);       get_gps();       gps.end();       Serial1.begin(9600);       Serial1.flush();       Serial.println("Start Printing");       Send();       show_coordinate();       Serial.println("Done Printing");       delay(5000);       //delay(1000);       k=1200;       break;     }   }   delay(1); } } void gpsEvent() {   gpsString="";   while(1)   {    while (gps.available()>0)                //Serial incoming data from GPS    {     char inChar = (char)gps.read();      gpsString+= inChar;                    //store incoming data from GPS to temporary string str[]      i++;      if (i < 7)                           {       if(gpsString[i-1] != test[i-1])       //check for right string       {         i=0;         gpsString="";       }      }     if(inChar=='\r')     {      if(i>65)      {        gps_status=1;        break;      }      else      {        i=0;      }     }   }    if(gps_status)     break;   } } void get_gps() {    gps_status=0;    int x=0;    while(gps_status==0)    {     gpsEvent();     int str_lenth=i;     latitude="";     logitude="";     coordinate2dec();         i=0;x=0;     str_lenth=0;    } } void show_coordinate() {         Serial.print("Latitude:");     Serial.println(latitude);     Serial.print("Longitude:");     Serial.println(logitude); } void coordinate2dec() {         //j=0;     String lat_degree="";     for(i=18;i<20;i++)          //extract latitude from string       lat_degree+=gpsString;         String lat_minut="";     for(i=20;i<28;i++)       lat_minut+=gpsString;         String long_degree="";     for(i=30;i<33;i++)          //extract longitude from string       long_degree+=gpsString;           String long_minut="";     for(i=33;i<41;i++)       long_minut+=gpsString;            float minut= lat_minut.toFloat();      minut=minut/60;      float degree=lat_degree.toFloat();      latitude=degree+minut;           minut= long_minut.toFloat();      minut=minut/60;      degree=long_degree.toFloat();      logitude=degree+minut; } void Send() {            webpage = "Welcome to MountPoint Technologies Pvt Ltd";       webpage+=name;       webpage+=date;       webpage+=number;       webpage+=cordinat;       webpage+="Latitude:";       webpage+=latitude;       webpage+="";       webpage+="Longitude:";       webpage+=logitude;       webpage+="";       webpage+= "       webpage+=latitude;       webpage+='+';              //28.612953, 77.231545   //28.612953,77.2293563       webpage+=logitude;       webpage+="\">Click Here for google map ";       sendwebdata();       webpage="";        while(1)          {       Serial.println("AT+CIPCLOSE=0");       Serial1.println("AT+CIPCLOSE=0");       while(Serial1.available())       {         //Serial.print(Serial1.read());         if(Serial1.find("0,CLOSE"))         {           return;         }       }       delay(500);       i++;       if(i>5)       {         i=0;       }       if(i==0)       break;      } } void sendwebdata() {      i=0;      while(1)      {       unsigned int l=webpage.length();       Serial1.print("AT+CIPSEND=0,");       Serial1.println(l+2);       Serial.println(l+2);       Serial.println(webpage);       Serial1.println(webpage);       while(Serial1.available())       {         if(Serial1.find("OK"))         {          return;         }       }             i++;       if(i>5)         i=0;         if(i==0)         break;       delay(200);      } } // end of code.

Topic by shivendrareddy  



how to save float value EEPROM

Hi This is Eabul. i want to save data to eeprom from press button . when TemperatureUp button press. increase float data like as 0.01> 0.02--------30.10> 30.61 and this value save to eeprom. and when TemperatureDown button press . decrease float data like as 30.60>30.59-----29.10 and update minus value eeprom and increase and decrease valud view lcd display . but when press button save int number not float. and show me lcd display int value. please help how to write and read float value from eeprom. press button. hear my code. //For Display #include // 3wire display LiquidCrystal595 lcd(4, 3, 2); // DS, ST_CP, SH_CP //For time #include #include RTC_DS1307 RTC; //for humidity #include "DHT.h" DHT dht; //for stor tempereratur and humidity #include int SetHumidity; int HumidityUp = 10; // switch up is at pin 10 int HumidityDown = 11; // switch down is at pin 11 float fix = 0.01; float settemp; // make a variable called temp float TemperatureUp = 12; // switch up is at pin 12 float TemperatureDown = 13; // switch down is at pin 13 //result view int led = 0; // led is at pin 0 void setup() { //For timer Wire.begin(); RTC.begin(); //For welcome screen lcd.begin(16,4); lcd.setCursor(0,0); lcd.print("Welcome Elab"); delay(2000); lcd.clear(); //for dht-11 pin setup dht.setup(A1); // data pin 2 } void loop() { //For tempererature up / down float temp[3]; getTemp(temp); float tempererature = temp[1]; settemp = EEPROM.read(1); // read the settemp on the eeprom if(digitalRead(TemperatureUp) == 1 ) { settemp+=fix; settemp++; EEPROM.write (1, settemp); /* write the most recent settemp in eeprom data stoage*/ } else {} if(digitalRead (TemperatureDown) == 1) { settemp -= fix; settemp--; EEPROM.write (1, settemp); /* write the most recent settemp in eeprom data stoage*/ } if (tempererature >= settemp) { digitalWrite (led, 1); } else { digitalWrite (led, 0);} //else { }; lcd.setCursor(0,0); lcd.print("T:"); lcd.print(tempererature); lcd.setCursor(8,0); lcd.print ("ST"); lcd.print (settemp); lcd.print((char)223); //End tempererature controll //For humidity up / down SetHumidity = EEPROM.read(2); int humidity = dht.getHumidity(); if(digitalRead(HumidityUp ) == 0 ) {SetHumidity++ ; } // add one to the settemp else {} if(digitalRead (HumidityDown) == 0) { SetHumidity--; } // Reduse settemp else { }; lcd.setCursor (0, 1); lcd.print ("CH:"); lcd.print (humidity); lcd.print ("%"); lcd.setCursor (8, 1); lcd.print ("SH:"); lcd.print (SetHumidity); lcd.print ("%"); delay (1); // wait 100 milliseconds EEPROM.write (2, SetHumidity); /* write the most recent settemp in eeprom data stoage*/ //End tempererature controll controll } //analog temperature void getTemp(float * t) { const int analogPin = 0; // replace 0 with analog pin const float invBeta = 1.00 / 3380.00; // replace "Beta" with beta of thermistor const float adcMax = 1023.00; const float invT0 = 1.00 / 298.15; // room temp in Kelvin int adcVal, i, numSamples = 5; float K, C, F; adcVal = 0; for (i = 0; i < numSamples; i++) { adcVal = adcVal + analogRead(analogPin); delay(100); } adcVal = adcVal/5; K = 1.00 / (invT0 + invBeta*(log ( adcMax / (float) adcVal - 1.00))); C = K - 273.15; // convert to Celsius F = ((9.0*C)/5.00) + 32.00; // convert to Fahrenheit t[0] = K; t[1] = C; t[2] = F; return; }

Topic by esumon    |  last reply


Soldering Iron tip is turning black and will not take a tinning ?

I have a brand new soldering iron and tips. I turned the iron on and waited for it to heat up, and immediately the tip turned black. I was told to clean it with a WET sponge and re-tin it. I did. or tried to, but it keeps turning black. I bought that tip-tinning stuff in the little tin and tried using that, but the tip still is black. It's as if the black tip will not accept the tin now...and it is brand new, although it sat in a box and a zip lock baggy for two years before I am working with it now. I tried to clean the tip by wiping it on a brass wire sponge thingy and then on the WET sponge. The tip looks like it would start to get shinny silver again but only in small places not the whole tip that should be all shiny silver. But then the whole tip just turns black immediately again even before I get to do any soldering at all. I tried to re-tin my other tip that did the same thing when I first tried to use this iron ( about 2 weeks ago) and the solder melted fast, but it just sort of built up on that tip like a big glob on the top of the tip. This soldering iron and solder I am using is for stained glass jewelry making not for electronics or plumbing. I am using all the correct materials for the job and have followed all directions and what I was told to try do, to fix it by the seller I bought it from, so I think I am doing everything right (?). I am using a lead free solder that is used for stained glass soldering jewelry. I am using the copper foil "tape" and copper metal and wire. But I can't get very far since this iron is giving me such problems. Am I doing something wrong or do you think the soldering iron is faulty? This iron is an Inland brand soldering iron. Can anyone out there please help me fix this? Or do I have to buy a new iron. I have so much work to do but can not do anything now until my iron will work properly. Help!!??? Oh another question I saw an Indestructible on how to make my own soldering iron tips from 6 awg copper wire...would this work for the job I need to do ? Because if it is the tips that are the problem I could make my own tips with pure copper but the all the irons I read about that are good always are made of a layer of iron and not just pure copper...will the self-made copper tips stick to my project or the solder since I am working with pure copper sheet and wire and I am using a lead free solder made up of Tin and Silver and one made of Tin and Copper. Its a bright shinny silver color since I want the silver look in the end... not the copper look in my hand made jewelry and sculptures I'm making. 

Question by donnadidit    |  last reply


Opening and closing beam katana (Tsubaki from No More Heroes)

I recently decided I'm going to go as Travis Touchdown for Halloween, and a friend and I decided we were going to attempt to make the Tsubaki Beam Katana. (the one in the middle)We've thought about making one that is always closed, (not able to extend out to open position) so I can wear it on my belt. But where's the fun in that. So we thought of course about making one that will always be extended out, (not able to collapse into closed position) but it would be cumbersome at times that I would need both my hands wherever I was, and I don't like putting things down, just so I can come back to it to see that it's been handled by someone else and broken, (I plan on it being sturdy, but still, someone will find a way) or even worse... missing. So I guess the only option would be to make a fully functioning one (being able to extend and collapse through the use of buttons, and when extended out, pressing a switch to turn on a light for the "beam")So basically thishttp://www.youtube.com/watch?v=Bm3crEC-fAw#t=0m5sexcept without the hitting of people part. lolThere is multiple ways I've thought on how to approach this, the simplest, but non awesome way, would be to just use gravity, like the old school toy lightsabers. If there's no other way, I guess that will be what I have to end up doing. But, lets not give up so soon shall we? I've thought of using a long spring, but the only place I thought of where to put that would be in the tube that would light up for the 'beam', but once lit up you would be able to see the shadow of the spring projected onto the tube, and I don't really want that. Another idea was to use air pressure somehow, I really don't know how though, this kind of stuff isn't exactly my forte. And my last idea was some gears that could possibly be used on the stick piece that extends on the outside of the beam, to hold the top of the whole beam katana, but that might be hard to pull off since that piece is going to be sectioned like an antenna that extends out.So what I'm asking for is different ideas that I could possibly use to get this thing to shoot open on command. I would like for it to shoot open and snap closed, but being able to get it to only shoot open seems more plausible in this situation. (and just manually close it by hand) But if you have ideas for it to open AND close on command, then please share, for I just may try it.Thank you for your time in reading this, and any help you have to offer.

Topic by SamuraiSamori    |  last reply


Pls help me with my code

I want to make home automation project using arduino. I want to control multiple led, password protected door and temperature showing. I have 3 code for these 3 feature. But I want to combine them together to control it from 1 android device. i just want to make work like that- if i press "Q" command then it will show temperature. if i press "R" command then it will work like multiple led controller. if i press "S" command then it will work like password protected locker.This is the code for bluetooth led control:-int relay1 = A0; int relay2 = A1; int relay3 = A2; int relay4 = A3; String readString; void setup() { Serial.begin(9600); pinMode(relay1, OUTPUT); pinMode(relay2, OUTPUT); pinMode(relay3, OUTPUT); pinMode(relay4, OUTPUT); } void loop() { while (Serial.available()) { delay(3); char c = Serial.read(); readString += c; } if (readString.length() >0) { if (readString == "A") { digitalWrite(relay1, HIGH); Serial.print("Relay 1 is On"); } if (readString == "W") { digitalWrite(relay1, LOW); Serial.print("Relay 1 is Off"); } //relay2 if (readString == "B") { digitalWrite(relay2, HIGH); Serial.print("Relay 2 is On"); } if (readString == "X") { digitalWrite(relay2, LOW); Serial.print("Relay 2 is Off"); } //relay3 if (readString == "C") { digitalWrite(relay3, HIGH); Serial.print("Relay 3 is On"); } if (readString == "Y") { digitalWrite(relay3, LOW); Serial.print("Relay 3 is Off"); } //relay4 if (readString == "D") { digitalWrite(relay4, HIGH); Serial.print("Relay 4 is On"); } if (readString == "Z") { digitalWrite(relay4, LOW); Serial.print("Relay 4 is Off"); } //All on / off if (readString == "E") { digitalWrite(relay1, HIGH); digitalWrite(relay2, HIGH); digitalWrite(relay3, HIGH); digitalWrite(relay4, HIGH); Serial.print("All Relay Is On"); } if (readString == "F") { digitalWrite(relay1, LOW); digitalWrite(relay2, LOW); digitalWrite(relay3, LOW); digitalWrite(relay4, LOW); Serial.print("All Relay Is Off"); } //next readString=""; } } This is the code for password control door:String inputString = ""; String command = ""; String value = ""; String password = "test123"; //setpassword here boolean stringComplete = false; int relay = 2; int greenLed = 5; int redLed = 6; void setup(){ Serial.begin(9600); // make sure it is the same baudrate as your bluetooth module inputString.reserve(50); command.reserve(50); value.reserve(50); boolean stringOK = false; pinMode(relay, OUTPUT); digitalWrite(relay, HIGH); pinMode(greenLed, OUTPUT); pinMode(redLed, OUTPUT); digitalWrite(redLed, HIGH); } void loop(){ if (stringComplete) { delay(100); int pos = inputString.indexOf('='); if (pos > -1) { command = inputString.substring(0, pos); value = inputString.substring(pos+1, inputString.length()-1); // extract command up to \n exluded if(!password.compareTo(value) && (command == "OPEN")){ openDoor(); Serial.println(" OPEN"); delay(100); } else if(!password.compareTo(value) && (command == "CLOSE")){ closeDoor(); Serial.println(" CLOSE"); delay(100); } else if(password.compareTo(value)){ Serial.println(" WRONG"); delay(100); } } inputString = ""; stringComplete = false; } } void serialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); //Serial.write(inChar); inputString += inChar; if (inChar == '\n' || inChar == '\r') { stringComplete = true; } } } void openDoor(){ digitalWrite(relay, LOW); digitalWrite(redLed, LOW); digitalWrite(greenLed, HIGH); } void closeDoor(){ digitalWrite(relay, HIGH); digitalWrite(redLed, HIGH); digitalWrite(greenLed, LOW); }This is the code for temperature showing:int data_pin = 9; int vcc_pin=8; int gnd_pin=10; boolean result[41]; //holds the result int interval=2000; //Sample every 2 seconds unsigned int temp; //in celcius unsigned int humidity; //in %RH void setup() { //Supply power to DHT11 (Uses upto 2.5mA) pinMode(gnd_pin, OUTPUT); pinMode(vcc_pin, OUTPUT); digitalWrite(gnd_pin,LOW); digitalWrite(vcc_pin,HIGH); //Initiate Serial for Bluetooth Communication Serial.begin(9600); } void loop() { //Pause before taking next measurement delay(interval); //Trigger reading by holding data pin low for 18ms pinMode(data_pin, OUTPUT); digitalWrite(data_pin,LOW); delay(18); digitalWrite(data_pin,HIGH); pinMode(data_pin, INPUT_PULLUP); //read 41 bits of signal for(int i=0;i<=40;i++){ result[i]=(pulseIn(data_pin, HIGH)>40); } //Extract Humidity (from byte 1) humidity=0; for (int i=1;i<=8;i++){ humidity=humidity<<1; if (result[i]) humidity|=1; } //Extract Temperature (from Byte 3) temp=0; for (int i=17;i<=24;i++){ temp=temp<<1; if (result[i]) temp|=1; } //Send data over Bluetooth Serial.print("*T"+String(temp)+"*"); Serial.print("*H"+String(humidity)+"*"); }This is the code i tried to combine all together.i just want to make work like that- if i press "Q" command then it will show temperature. if i press "R" command then it will work like multiple led controller. if i press "S" command then it will work like password protected locker.I tried `if(readString == "Q")` , `if(readString == "R")` , `if(readString == "S")` for control the code seperately but its not working:int data_pin = 9; int vcc_pin=8; int gnd_pin=10; int relay1 = A0; int relay2 = A1; int relay3 = A2; int relay4 = A3; int relay = 2; int greenLed = 5; int redLed = 6; boolean result[41]; //holds the result int interval=2000; //Sample every 2 seconds unsigned int temp; //in celcius unsigned int humidity; //in %RH String inputString = ""; String command = ""; String value = ""; String password = "test123"; //setpassword here boolean stringComplete = false; String readString; void setup() { //Supply power to DHT11 (Uses upto 2.5mA) pinMode(gnd_pin, OUTPUT); pinMode(vcc_pin, OUTPUT); digitalWrite(gnd_pin,LOW); digitalWrite(vcc_pin,HIGH); pinMode(relay1, OUTPUT); pinMode(relay2, OUTPUT); pinMode(relay3, OUTPUT); pinMode(relay4, OUTPUT); pinMode(relay, OUTPUT); digitalWrite(relay, HIGH); pinMode(greenLed, OUTPUT); pinMode(redLed, OUTPUT); digitalWrite(redLed, HIGH); inputString.reserve(50); command.reserve(50); value.reserve(50); boolean stringOK = false; //Initiate Serial for Bluetooth Communication Serial.begin(9600); } void loop(){ if (readString == "Q"){ //Pause before taking next measurement delay(interval); //Trigger reading by holding data pin low for 18ms pinMode(data_pin, OUTPUT); digitalWrite(data_pin,LOW); delay(18); digitalWrite(data_pin,HIGH); pinMode(data_pin, INPUT_PULLUP); //read 41 bits of signal for(int i=0;i<=40;i++){ result[i]=(pulseIn(data_pin, HIGH)>40); } //Extract Humidity (from byte 1) humidity=0; for (int i=1;i<=8;i++){ humidity=humidity<<1; if (result[i]) humidity|=1; } //Extract Temperature (from Byte 3) temp=0; for (int i=17;i<=24;i++){ temp=temp<<1; if (result[i]) temp|=1; } //Send data over Bluetooth Serial.print("*T"+String(temp)+"*"); Serial.print("*H"+String(humidity)+"*"); } if (readString == "R"){ while (Serial.available()) { delay(3); char c = Serial.read(); readString += c; } if (readString.length() >0) { if (readString == "A") { digitalWrite(relay1, HIGH); Serial.print("Relay 1 is On"); } if (readString == "W") { digitalWrite(relay1, LOW); Serial.print("Relay 1 is Off"); } //relay2 if (readString == "B") { digitalWrite(relay2, HIGH); Serial.print("Relay 2 is On"); } if (readString == "X") { digitalWrite(relay2, LOW); Serial.print("Relay 2 is Off"); } //relay3 if (readString == "C") { digitalWrite(relay3, HIGH); Serial.print("Relay 3 is On"); } if (readString == "Y") { digitalWrite(relay3, LOW); Serial.print("Relay 3 is Off"); } //relay4 if (readString == "D") { digitalWrite(relay4, HIGH); Serial.print("Relay 4 is On"); } if (readString == "Z") { digitalWrite(relay4, LOW); Serial.print("Relay 4 is Off"); } //All on / off if (readString == "E") { digitalWrite(relay1, HIGH); digitalWrite(relay2, HIGH); digitalWrite(relay3, HIGH); digitalWrite(relay4, HIGH); Serial.print("All Relay Is On"); } if (readString == "F") { digitalWrite(relay1, LOW); digitalWrite(relay2, LOW); digitalWrite(relay3, LOW); digitalWrite(relay4, LOW); Serial.print("All Relay Is Off"); } //next readString=""; } } if (readString == "S"){ if (stringComplete) { delay(100); int pos = inputString.indexOf('='); if (pos > -1) { command = inputString.substring(0, pos); value = inputString.substring(pos+1, inputString.length()-1); // extract command up to \n exluded if(!password.compareTo(value) && (command == "OPEN")){ openDoor(); Serial.println(" OPEN"); delay(100); } else if(!password.compareTo(value) && (command == "CLOSE")){ closeDoor(); Serial.println(" CLOSE"); delay(100); } else if(password.compareTo(value)){ Serial.println(" WRONG"); delay(100); } } inputString = ""; stringComplete = false; } } } void serialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); //Serial.write(inChar); inputString += inChar; if (inChar == '\n' || inChar == '\r') { stringComplete = true; } } } void openDoor(){ digitalWrite(relay, LOW); digitalWrite(redLed, LOW); digitalWrite(greenLed, HIGH); } void closeDoor(){ digitalWrite(relay, HIGH); digitalWrite(redLed, HIGH); digitalWrite(greenLed, LOW); }

Topic by Shoyeb MohammedS  


An open letter to the support and those running this website

For a few years now good people using this website tried to make suggestions, make requests or just attempted to provide helpful feedback and bug reports.Severe bugs are usually dealt with promptly and I like this very much.For everything else though at least I start to develop a feeling that tells me your end either does not listen or does not care.Users are what keeps this section and website alive.Users provide the content that allows you to place ads to make a bit of revenue.Users fill your servers with their ideas.Users are those you should help to have it easy and enjoy being an active part of the community.I won't repeat the things users stated or requested thausands of times already.But I do state that at least got enough excuses and promises over the past few years to think I am being taken for a ride.You state the users are highly valued - valued as what exactly?You suck in user's creations like a vacuum cleaner and promote it all through endless numbers of sponsored contests.You create volume and website hits only.Quality was reduced to forcing restrictions and often totally useless standards on the user.There are articles explaining what a successful Ible needs and how to write one so it fits into the greater picture here.But where is the information how to embed pictures with the text? Oh right, that would be too nice for someone doing it or reading it, so we just plaster a block of images in a meaningless location on top of the text...I was a forum admin for a few years and if there is one thing I learned from it than : Don't mess with the users by "improving" things....Sadly Instructables never got that experience and we saw a lot of "improvements" that really absolutely no one using the website wanted or needed.The storm from that again showed how badly the user is neglected here as even reverting back to something close to what worked before took many months.The request to have some sticky postings informing the user about progress and what features might come soon was rejected again and again.Although I realised the offical suggestion to rework my last Ible so it can be published was a mistake:It highlighted the expectations you have when it comes to how you want users to create their Ibles.Creativity is not just the project in question but also how the creator wants to present it here!!I call it censorship if a person is forced to comply with standards that no one needs nor wants.We get excuses, we get promises but we simply never get anything that actually helps the user to be more creative and have it easy to create posts and Ibles.How long was it until we at least got a half working sorting option in the community section? About a year or so?You want more and better Ibles, a functioning community section again, even more revenue?Well, then give the user what they want or at least what they need to be creative again.Talk to the boss and tell him or her that we need more coders or preferably a new platform for all that actually works and is not just patchwork.Take a look at forums, blogs or other community websites that offer postings and content.See what is possible and what users create, how they create it.Search through the endless numbers of complaints here to find what you missed again, again and again.Instructables won't lose the ongoing supply of new Ibles thanks to contests but as said, volume and quantity is not quality of content ;)A user who is left struggling year after year will give up one day.Users who realise that it is not worth it won't come back after their first and only posting in the community section.And well, someone who created a really outstanding Ible for a contest and does not even make it to the final rounds might never bother again.Why is there no "open system" for contests?Anyone deciding what Ibles make it through should be open about it, post it and allow users to suggest entries he or she might have missed.Even more so for the winner selections.How many votes? What exactly made it a winner? Was it promoted by featuring it or listing it elsewhere?I don't know about you guys but even in a schools science contest the winners will be announced with some meaningful words why they actually won....Sadly, right now, I only see taking, restrictions and ignorance for the user here.The few posts from the support are highly appreciated but only a drop of water onto a red hotplate.Just for imagination:I took tons of pictures detailing my project right from the start.I took a lot of notes while creating it.I am ready to create a great Ible with it all so everyone can build or create it, I want to world to know about it.Then I click on the button to make my Ible and am greeted right away with an image uploader....Dumb enough I upload all my pics in one go.I start writing, I want to include a picture with the text so the user knows exactly why for example that screw needs to be done exactly like the picture shows.But wait...I can't drag the image down from that studip bar.Instead I am forced to create a new step for each picture that has a pecial meaning or purpose.Making a list of parts?Well, lets do it manually and by wasting precious time because there is not usable listing option anywhere to allow the creation with bullets or similar.Oh well, several hours later than expected it is time to take a preview of my creation.The images are clustered up and in no way usable to floow the text, so I start again, add more steps, drag it out even more.In the end I have about 50 steps for something that was fine in MS Word on a few pages.....To finnish I just need to somehow figure out how to get my cover images to fit into this tiny box.Cropping, resizing, again and again only to realise I might have as well used the thumb image IrfanView created in my folder...Then I do the final check.I try to make sense of the unplanned order of things and that no images makes enough sense because I need to click back and forth between steps all the time to undestand it.Then I take another look at my MS Word printout and the Ibles lands in my draft folder.When a suitable contest comes along I might try to check if the editing options have improved enough to post it.Well, I now have more drafts than published Ibles...Now imagine I would not be the only one....

Topic by Downunder35m    |  last reply


PIC18LF4680 microcontroller and usb ttl for usart / serial data

Hi everyone. I want to know if it's possible to connect a ttl device directly to my PIC18LF4680 for serial communication via USART . I can connect the ttl device directly to my Arduino Uno without issues. The ttl  device has 6 pins (dtr , rxd , txd , vcc(3.3v or 5v) , cts, gnd) . I have two different codes snippets below that perform USART communication. * Version one(I) utilizes the "usart.h" peripheral library. * Version two(II) uses "TXREG" and "RCREG" for sending and receiving data. Both versions run well in my virtual environment (Proteus 8 Professional), but not in the real world environment. Am I missing a step? Do I need a special library? Or is it not possible with this chip? VERSION (I)   ------------------------ #include "fuses.h" #include #include #include #include void main(void) {         TRISB = 0x00;     OSCCON = 0x76;          // 8mhz (0111 0110)          LATBbits.LATB4 = 0;      LATBbits.LATB1 = 0;      LATBbits.LATB0 = 0;          unsigned char txt1[] = "Hello World \r\n";     unsigned char txt2[] = "Enter a number.... \r\n";         CloseUSART();         OpenUSART(USART_TX_INT_OFF &             USART_RX_INT_OFF &             USART_ASYNCH_MODE &             USART_EIGHT_BIT &             USART_CONT_RX &             USART_BRGH_HIGH &             USART_ADDEN_OFF ,             52);             for(int x=0;x<=20;x++){__delay_ms(50);}         // write/send intro to PC         while(BusyUSART());     putsUSART((char *)txt1);         for(int x=0;x<20;x++){__delay_ms(50);}         while(BusyUSART());     putsUSART((char *)txt2);             for(int x=0;x<20;x++){__delay_ms(50);}             while(1){         sdata = ReadUSART();                 switch(sdata){             case '1':                 LATBbits.LATB4 = 1;                  LATBbits.LATB1 = 0;                  LATBbits.LATB0 = 0;              break;                         case '2':                 LATBbits.LATB4 = 0;                 LATBbits.LATB1 = 1;                  LATBbits.LATB0 = 0;                             break;                         case '3':                 LATBbits.LATB4 = 0;                  LATBbits.LATB1 = 0;                  LATBbits.LATB0 = 1;              break;                                     default:                 LATBbits.LATB4 = 0;                 LATBbits.LATB1 = 0;                 LATBbits.LATB0 = 0;              break;         }     }     } -------------------------------------------- VERSION (II) --------------------------- #include "fuses.h" #include #include #include #define STRLEN 12 volatile unsigned char t; volatile unsigned char rcindex; volatile unsigned char rcbuf[STRLEN]; void USART_init(void){         TXSTAbits.TXEN = 1;     // enable transmitter     TXSTAbits.BRGH = 1;     // high baud rate mode     RCSTAbits.CREN = 1;     // enable continous receiving     // configure I/O pins     TRISCbits.TRISC7 = 1;     // RX pin is input     TRISCbits.TRISC6 = 1;     // TX pin is input (automatically configured)     SPBRG = 52;                PIE1bits.RCIE = 1;      // enable USART receive interrupt     RCSTAbits.SPEN = 1;     // enable USART         } void USART_putc(unsigned char c) {     while (!TXSTAbits.TRMT); // wait until transmit shift register is empty     TXREG = c;               // write character to TXREG and start transmission } void USART_puts(unsigned char *s) {     while (*s)     {         USART_putc(*s);     // send character pointed to by s         s++;                // increase pointer location to the next character     } } void main(void) {         OSCCON = 0x76;          // 8mhz (0111 0110)         USART_init();         USART_puts("Init complete! \n");     INTCONbits.PEIE = 1;    // enable peripheral interrupts     INTCONbits.GIE = 1;     // enable interrupts     while(1)     {     }     } void interrupt ISR(void) {     if (PIR1bits.RCIF)  // check if receive interrupt has fired     {         t = RCREG;      // read received character to buffer         // check if received character is not new line character         // and that maximum string length has not been reached         if ( (t != '\n') && (rcindex < STRLEN) )         {             rcbuf[rcindex] = t; // append received character to string             rcindex++;          // increment string index         }         else         {             rcindex = 0;        // reset string index             USART_puts(rcbuf);  // echo received string         }         PIR1bits.RCIF = 0;      // reset receive interrupt flag     } } ------------------------------------------------------------ Any and all help is appreciated. Thanks!

Topic by newbie14    |  last reply


What components do I need to produce my 3 rechargeable Power-Packs using what ive collected so far ? Please can anyone help ?

Hello & Good day to you all, I'm making my own powerpacks for: a miniature wireless CCTV camera & receiver (Link Below for specs) , and a rechargeable powerpack to charge my laptop (that dies in 15minutes!) Wireless Pinhole Spy Camera & receiver After spending stupid money on sh*t 9 volt batteries (600mAh = £11 EACH) - ive had enough of the crap and absolutely absurdly LOW capacity 9 volt batteries out there (when TODAY's 'D' cell is capable of 11,000mAh !!!) and extremely high cost - i am making a battery-pack to power my receiver and another power-pack for the wireless camera using Ni-MH rechargeable batteries in the following packs: Powerpack 1 (for camera) 6 x 18650 cells @ 3.6v each, 5000mAh {Total Power=21.6v} Output Power Needed:  8v, 200mA Powerpack 2 (for camera receiver) 24 x D Size cells @ 1.2v each 11000mAh ( Total Power= 28.8v)  Output Power Needed: 12v, 500mA  Powerpack 3 (for Laptop) 40 x D cells @ 1.2v each, 11000mAh {Total Power=48v} Output Power Needed: 16v, 4A  I should add that my existing 9-volt (2 new & 1 old) rechargeable batteries are a little-more-than USELESS (Rated @ 175mAh...{USELESS}) as the receiver of my wireless camera drinks the power (juice, lol) at an extremely FAST-Rate... 15 minutes of use and its DEAD. 10 mins of use from the old 9 volt battery. And thats all from a 9 hour charge... How pitiful...Despicable & Disgusting... Now i got the idea to use a semiconductor from an instructable to make a simple solder-fume-extractor... (Link Below!) and also i know that resistors can reduce the voltage and amperage output of a circuit.......... Solder Fume Extractor I have calculated, researched, 'Googled', calculated again, more googling and after 6 months of trawling through the internet to find parts of designs i could hack together to achieve my goals including getting answers from "SO-CALLED-EXPERTS 'In the trade'" and from Circuitry & Electronics Forums (whom shall not be named...) yet they always say, yeah, here's my email address, email me your questions and when i do, they all turn around and gimmi some crap like "oh...well...you have your plan all set-out so what do you need me for ?" AS*HOLES! F*C*ING AS*HOLES!!! - If these peeps didnt want to help in the 1st place, then WHY BOTHER to give me their email address so i could ask them directly for help ? Im now going to give up and finally cry-out --- Please HELP (Again and probably for the last time!) ok ok, enough of the hell's-anger-fuelled-rage-at-"EXPERTS" who give me the run-around.....(Bcoz they're AS*HOLES...) Please please please can anyone help me find the components i need to make my very simple circuits for my battery packs ! I know that the use of a/a few? semiconductor/s (3 pin only) can let in a certain voltage and only output a specific voltage & amperage - i think i'll be needing a combination of a semiconductor and a resistor but i've searched continuous for 6 months now and am now irritated-beyond-belief that i still haven't found what im looking for or that no one is willing to help! ffs! Many thanks in advance for some light on this darn-troubling matter.... Please Help !!! Power-Specification For My Gear: Wireless Receiver: DC 12V 500mA Wireless Camera: DC 8V 200mA Sony Vaio Laptop 16v, 4A Also how do i charge my individual power-packs ? At what volts & amps do i charge them ??? Im already severely mobility-impaired and wouldn't want my life getting worse by any of my battery-packs exploding near me!!!!  Ingredients i have collected So Far: - 12 x 18650 5000mAh Batteries (Li-ion) (i want to make a total of two power-packs with these) - Solder Tabs for battery Packs -Small to medium collection of semiconductors + (plus) & - (minus) output voltages (from -24v to +25v) and from 100mA to 1.5mA amperage... - Heatshrink (40mm, 50mm, 70mm) - 24 x D cells @ 11000mAh - 40 x D cells @ 11000mAh I have no resistors but can order anything i need online if i only knew what to order!!! i would also need to include a circuit to prevent deep-discharge & over-charge! This is where i need the main help: I cannot read electrical diagrams at all but try to but it takes a day of deciphering and thats only if i do it right, i have dyslexia and am fighting daily with it when it comes to referring to any diagrams concerning circuits so would it be possible if someone could draw the circuits i need onto an a4 piece of paper and photograph it to be posted here (or draw it in paint, lol) - what i mean is, to draw a basic 3 pin semiconductor (a square with the 3 pins coming out the bottom, lol) and then draw the wires that need to connect to all the 3 pins to then for the wires to go to whatever component they need to go to next, for example ? {the 'solder-fume-extractor's' wiring picture where you can clearly-see where all the wires connect to all the components is the only type of simple diagram i can read by myself} Still wiht me ? i lose myself sometimes! So as i understand it, from what ive been reading so far, as long as the voltage output of the battery pack is correct, say for example for my wireless camera, if ive used a semiconductor to get the voltage of my power-pack down to give an output of 8v rated to 500mAh, as the device (wireless camera) only uses a max of 200mAh, then does this mean that the device will only use what it needs and ignore the rest ? Also it has taken a week of help from many friends of mine to help write this question and to keep it on-track with my main goals for the 3 power-packs listed above! if anyone needs more info, please let me know and i shall endeavor to reply as soon as humanly possible, again many thanks for your help Again, many thanks in advance for all help given and i sincerely apologize the long speech of a few questions, im afraid i get too-specific when asking for help (and often branch-off far-too-much, like now, lol)

Topic by offtherails2010  


Top 5 new Instructables 6/5 -6/12

Another week has gone by and another new batch of great new Instructables have popped up. Below is a list of the five, in order, that have received the most pageviews and thus grabbed the most attention lately.So if you haven't check them out yet be sure to give them a read. And if you want more fresh and cool DIY stuff, check out the featured list for many more ideas.Have a great weekend, everyone! Cardboard LumberHow would you like an incredibly strong, cool, and cheap building material for making lightweight tables, chairs, shelves, or anything else you can think of. Reusing cardboard... posted by theRIAA on Jun 8, 2009 Recycled T-shirt NecklaceThis is a really simple soft necklace / scarf that can be made in about five minutes. I keep seeing similar ones being sold for twenty, forty, even sixty dollars while it can ... posted by cucumbersome on Jun 6, 2009 Hand LightsIf you work with your hands and want to have more light where you're working, these hand lights (okay.. forearm lights) work great and are pretty simple to make. Use them for... posted by Ookseer on Jun 6, 2009 Cupcake ConesDelicious, clever, and surprising, these cupcakes impersonating ice cream cones are sure to delight! My mother used to make these for my brother and me when we were kids an... posted by scoochmaroo on Jun 8, 2009 Pool Solar water heaterHow to build a solar pool water heater. posted by Lynxspring on Jun 6, 2009

Topic by fungus amungus    |  last reply


Write output on registery inside ESP8266

Could any one help me please? I have the following code to make MODBUS tcp/ip(its work good) the other issue in the code is ultrasonic sensor (trig on D1& echo on D2 and output distance on serial port)I want to write distance on one of memory register say (3). I use the command "digitalWrite(distance, MBHoldingRegister[3] )" its fail then I use analogWrite also fail what's the solution?#include #define trigPin D1#define echoPin D2#define analog_output D5float distance;long duration;int dataIn;int m = 0;int h = 0;int t = 0;const char* ssid = "MH_Ext";const char* password = "74375325";int ModbusTCP_port = 502;//////// Required for Modbus TCP / IP /// Requerido para Modbus TCP/IP /////////#define maxInputRegister 20#define maxHoldingRegister 20#define MB_FC_NONE 0#define MB_FC_READ_REGISTERS 3 //implemented#define MB_FC_WRITE_REGISTER 6 //implemented#define MB_FC_WRITE_MULTIPLE_REGISTERS 16 //implemented// MODBUS Error Codes//#define MB_EC_NONE 0#define MB_EC_ILLEGAL_FUNCTION 1#define MB_EC_ILLEGAL_DATA_ADDRESS 2#define MB_EC_ILLEGAL_DATA_VALUE 3#define MB_EC_SLAVE_DEVICE_FAILURE 4// MODBUS MBAP offsets//#define MB_TCP_TID 0#define MB_TCP_PID 2#define MB_TCP_LEN 4#define MB_TCP_UID 6#define MB_TCP_FUNC 7#define MB_TCP_REGISTER_START 8#define MB_TCP_REGISTER_NUMBER 10byte ByteArray[260];unsigned int MBHoldingRegister[maxHoldingRegister];//////////////////////////////////////////////////////////////////////////WiFiServer MBServer(ModbusTCP_port);void setup() {pinMode(14, OUTPUT);pinMode(trigPin, OUTPUT);pinMode(echoPin, INPUT);Serial.begin(9600);delay(100) ;WiFi.begin(ssid, password);delay(100) ;Serial.println(".");while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}MBServer.begin();Serial.println("Connected ");Serial.print("ESP8266 Slave Modbus TCP/IP ");Serial.print(WiFi.localIP());Serial.print(":");Serial.println(String(ModbusTCP_port));Serial.println("Modbus TCP/IP Online");}void loop() {distance = getDistance();Serial.println(distance);delay(1000);// Check if a client has connected // Modbus TCP/IPWiFiClient client = MBServer.available();if (!client) {return;}boolean flagClientConnected = 0;byte byteFN = MB_FC_NONE;int Start;int WordDataLength;int ByteDataLength;int MessageLength;// Modbus TCP/IPwhile (client.connected()) {if(client.available()){flagClientConnected = 1;int i = 0;while(client.available()){ByteArray[i] = client.read();i++;}client.flush();///// code here --- codigo aqui///////// Holding Register [0] A [9] = 10 Holding Registers Escritura///////// Holding Register [0] A [9] = 10 Holding Registers Writing/// Enable Output 14digitalWrite(14, MBHoldingRegister[14] );digitalWrite(distance, MBHoldingRegister[12] );//// end code - fin//// rutine Modbus TCPbyteFN = ByteArray[MB_TCP_FUNC];Start = word(ByteArray[MB_TCP_REGISTER_START],ByteArray[MB_TCP_REGISTER_START+1]);WordDataLength = word(ByteArray[MB_TCP_REGISTER_NUMBER],ByteArray[MB_TCP_REGISTER_NUMBER+1]);}// Handle requestswitch(byteFN) {case MB_FC_NONE:break;case MB_FC_READ_REGISTERS: // 03 Read Holding RegistersByteDataLength = WordDataLength * 2;ByteArray[5] = ByteDataLength + 3; //Number of bytes after this one.ByteArray[8] = ByteDataLength; //Number of bytes after this one (or number of bytes of data).for(int i = 0; i < WordDataLength; i++){ByteArray[ 9 + i * 2] = highByte(MBHoldingRegister[Start + i]);ByteArray[10 + i * 2] = lowByte(MBHoldingRegister[Start + i]);}MessageLength = ByteDataLength + 9;client.write((const uint8_t *)ByteArray,MessageLength);byteFN = MB_FC_NONE;break;case MB_FC_WRITE_REGISTER: // 06 Write Holding RegisterMBHoldingRegister[Start] = word(ByteArray[MB_TCP_REGISTER_NUMBER],ByteArray[MB_TCP_REGISTER_NUMBER+1]);ByteArray[5] = 6; //Number of bytes after this one.MessageLength = 12;client.write((const uint8_t *)ByteArray,MessageLength);byteFN = MB_FC_NONE;break;case MB_FC_WRITE_MULTIPLE_REGISTERS: //16 Write Holding RegistersByteDataLength = WordDataLength * 2;ByteArray[5] = ByteDataLength + 3; //Number of bytes after this one.for(int i = 0; i < WordDataLength; i++){MBHoldingRegister[Start + i] = word(ByteArray[ 13 + i * 2],ByteArray[14 + i * 2]);}MessageLength = 12;client.write((const uint8_t *)ByteArray,MessageLength);byteFN = MB_FC_NONE;break;}}}//===== getDistance - Custom Functionint getDistance() {// Clears the trigPindigitalWrite(trigPin, LOW);delayMicroseconds(2);// Sets the trigPin on HIGH state for 10 micro secondsdigitalWrite(trigPin, HIGH);delayMicroseconds(10);digitalWrite(trigPin, LOW);// Reads the echoPin, returns the sound wave travel time in microsecondsduration = pulseIn(echoPin, HIGH);// Calculating the distancedistance = duration * 0.034 / 2; // distance in cmreturn distance;}

Question by methaq_ali  


Help for realising a linefollower tankbot

Hello, I want to realize a linefollowing tank bot. I got this following parts: - Arduino Mega 2560 - Arduino MotorShield Rev03 - Pololu QTR-8RC Array - Pololu RP5 Tankchassis (6V DC Motors) Now all parts are together and the code must be completed. Therefore I found a really nice PID-based tutorial for linefollower: http://letsmakerobots.com/blog/enigmerald/pid-tutorials-line-following I create a program, but after calibrating the sensors, the bot doesn't drive on the line. It makes no sense were it drives. Most time it do 90° turns and so on. Do you find a better solution for my code? [code] #include #include   /////////////////////////// // define constants   // /////////////////////////// #define AUTO_CALIB  false      // Autokalibrierung aktivieren #define DEBUG_ENABLE   true               // false=keine Serial Ausgaben #define NUM_SENSORS    8                  // Anzahl der verwendeten Sensoren #define TIMEOUT        2500               // waits for 2500 microseconds for sensor outputs to go low #define EMITTER_PIN    QTR_NO_EMITTER_PIN         // Default: kein Emitterpin definiert #define MOTOR_SPEED    100               // PWM Signal 0-255 (Basismotorgeschwindigkeit) #define MOTOR_MAX_SPEED 255       // PWM Signal für Maximalgeschwindigkeit #define KP     0.2                    // KP-Wert für PID Regler #define KD     5                     // KD-Wert für PID Regler ( Beachte: Kp < Kd) #define SERVO_PIN1  11       // PWM Ausgang für Servo1 #define SERVO_PIN2  12       // PWM Ausgang für Servo2 #define CALIB_LED   13       // LED Ausgang für Kalibrierungsphase ////////////////////////// // define variables     // ////////////////////////// // Zuweisung der Sensoren 0-7 an die digitalen IO's 22-29 QTRSensorsRC qtrrc((unsigned char[]) {22, 23, 24, 25, 26, 27, 28, 29}, NUM_SENSORS, TIMEOUT, EMITTER_PIN); unsigned int sensorValues[NUM_SENSORS]; int MotorLeftSpeed=3;                  // PWM pin for speed control left int MotorRightSpeed=11;                // PWM pin for speed control right int MotorLeftDirection=12;            // digital pin for direction control left int MotorRightDirection=13;            // digital pin for direction control right int MotorLeftBrake=9;                  // digital pin for brake control left int MotorRightBrake=8;                 // digital pin for brake control right int lastError = 0; ///////////////////// // Initialisierung // ///////////////////// void setup() {     // Initialisierung verschiedner IOs   pinMode(CALIB_LED, OUTPUT);    // Definiert LED Ausgang für Kalibierungsphase       // Initialisierung linker Motor   pinMode(MotorLeftDirection, OUTPUT);      // Definiert Ausgang für den linken Motor   pinMode(MotorLeftBrake, OUTPUT);          // Definiert Bremse für den linken Motor   pinMode(MotorLeftSpeed, OUTPUT);   // Definiert Geschwindigkeitsausgang für linken Motor   // Initialisierung rechter Motor   pinMode(MotorRightDirection, OUTPUT);     // Definiert Ausgang für den rechten Motor   pinMode(MotorRightBrake, OUTPUT);         // Definiert Bremse für den rechten Motor     // Initialisierung Servo Motoren   servo1.attach(SERVO_PIN1);     // Zuweisung PWM PIN für Servo1   servo2.attach(SERVO_PIN2);     // Zuweisung PWM PIN für Servo2   if (DEBUG_ENABLE)   {    Serial.begin(9600);    Serial.print("Debug Modus aktiviert:\n");     }     delay(500);     digitalWrite(CALIB_LED, HIGH);    // turn on Arduino's LED to indicate we are in calibration mode   for (int i = 0; i < 400; i++)   // make the calibration take about 10 seconds   {     qtrrc.calibrate();           // reads all sensors 10 times at 2500 us per read (i.e. ~25 ms per call)   } delay(20);      // The 20 ms delay in the calibration code is intended to make the routine take a reasonable amount of time.     digitalWrite(CALIB_LED, LOW);     // turn off Arduino's LED to indicate we are through with calibration       if (DEBUG_ENABLE)    {    // print the calibration minimum values measured when emitters were on       for (int i = 0; i < NUM_SENSORS; i++)    {   Serial.print(qtrrc.calibratedMinimumOn[i]);   Serial.print(' ');    }    Serial.println();       // print the calibration maximum values measured when emitters were on    for (int i = 0; i < NUM_SENSORS; i++)    {   Serial.print(qtrrc.calibratedMaximumOn[i]);   Serial.print(' ');    }    Serial.println();    Serial.println();   }   delay(1000);   } /////////////////// // Main Program  // /////////////////// void loop() {   // read calibrated sensor values and obtain a measure of the line position from 0 to 5000 // To get raw sensor values, call: // qtrrc.read(sensorValues); instead of unsigned int position = qtrrc.readLine(sensorValues); // Variable positon zeigt die genaue Position (0-7000) an   unsigned int position = qtrrc.readLine(sensorValues); // get calibrated readings along with the line position, refer to the QTR Sensors Arduino Library for more details on line position. int error = position - 3500;  // 3500 is the desired position   if (DEBUG_ENABLE)   {    // print the sensor values as numbers from 0 to 1000, where 0 means maximum reflectance and    // 1000 means minimum reflectance, followed by the line position    for (unsigned char i = 0; i < NUM_SENSORS; i++)    {     Serial.print(sensorValues[i]);     Serial.print('\t');    }    Serial.print(position);    // comment this line out if you are using raw values   } int motorSpeed = KP * error + KD * (error - lastError); lastError = error; int rightMotorSpeed = MOTOR_SPEED + motorSpeed; int leftMotorSpeed  = MOTOR_SPEED - motorSpeed;     if (rightMotorSpeed > MOTOR_MAX_SPEED ) rightMotorSpeed = MOTOR_MAX_SPEED;    // Verhindert dass die Maximalgeschwindigkeit überschritten wird if (leftMotorSpeed > MOTOR_MAX_SPEED ) leftMotorSpeed  = MOTOR_MAX_SPEED;    // Verhindert dass die Maximalgeschwindigkeit überschritten wird if (rightMotorSpeed < 0) rightMotorSpeed  = 0;          // Verhindert einen negativen Geschwindigkeitswert if (leftMotorSpeed < 0) leftMotorSpeed   = 0;          // Verhindert einen negativen Geschwindigkeitswert   {   // Ansteuerung der Motoren durch PID Berechnung   digitalWrite(MotorRightBrake, LOW);     // Motorbremse rechts deaktivieren   digitalWrite(MotorLeftBrake, LOW);     // Motorbremse links deaktivieren   digitalWrite(MotorRightDirection, HIGH);   // Motor rechts im Uhrzeigersinn  --> fährt vorwärts   digitalWrite(MotorLeftDirection, LOW);    // Motor links gegen den Uhrzeigersinn  --> fährt vorwärts   analogWrite(MotorRightSpeed, rightMotorSpeed);  // Motorgeschwindigkeit rechts in Abhängigkeit des PID Reglers   analogWrite(MotorLeftSpeed, leftMotorSpeed);  // Motorgeschwindigkeit links in Abhängigkeit des PID Reglers }           } [/code]

Topic by julianpe    |  last reply