The forums are retiring and are now closed for new topics and comments. The existing content will remain online and accessible through 2020 to provide everyone the opportunity to save any relevant information. In the spring of 2021, these Community forums will be taken offline.

Search for buffing in Topics


Help with Cleaning a Straigh-Razor

I found a straight-razor at the flea market the other day, so obviously I bought it. Now I'm wondering how I would go about cleaning and sharpening it? Does anyone know good metal cleaning tips for such a delicate blade? I know that you sharpen the blade before you intend to shave on a strop, or a piece of leather, but anything else? On the blade, it has: George Wostenholm & Son's Celebrated I-XL Razor Sheffield, England

Topic by bumpus    |  last reply


What is this? For polishing? Answered

Anyone know what this is? I'm guessing that it's supposed to be powered by a drill and used with buffing compound for polishing. Thanks! Pictures: 

Question by Yonatan24    |  last reply


Arduino: How do I convert a decimal to ASCII? Answered

I'm following this Instructable which is about communicating between 2 Arduinos with RF modules. The received value is stored in buff[0]  and if this value is "1", a light switches on. However, I was going to experiment with sending values other that 1 or 0 from the other Arduino and first added Serial.println(but[0]) but in the serial monitor, it read 49, which if you treat as a decimal value and convert ASCII, you get "1". Equally, when "0" was sent from the sending Arduino, the monitor read 48, which is decimal of the ASCII value "1". I'm a bit confused as the if-statement below works fine. Basically, I want "1" and "0" to be printed to the serial monitor not 48 and 49. How do I do this? Thanks, theRedBryophyte Serial.println(buf[0]); if(buf[0]=='1'){   //some code here... }

Question by theredbryophyte    |  last reply


Firebert010's Shop

My shop will be updated as I see fit. For Sale: JET SKI: Stand-up jetski of unknown brand or type. It runs perfectly, and the motor is in excellent condition. Outside is a bit buffed up, but it runs like a charm. Pictures below. Bidding starts at $350 if you pick it up.

Topic by Firebert010    |  last reply


whats the best way to care for scratched chrome on a motorbike? Answered

had my first fall today :( ended up scratching the exhaust...whats the best way to clean it up? im riding a yamaha xvs dragstar any additional information such as best way to keep the bike buffed/polished and generally clean and rust free will be much apreciated thanks

Question by dubpunkdub    |  last reply


Virtualwire RF 433mhz Voltage problem mk2

Hi, I have this code and have modded it a bit, i was wondering if there was a way of making the pincode more than 1 digit long? Also i have got the code sending command and pin code when buton to pressed and stopping when released and the receiver end reading it and seeing it stop, sending a pin high when it reads it but i cant get i to go low when it stops receiving it. wen ever it looks like it will work It seems to make the pin go to 0.16 when low to 0.24 when high. can you help? tom Transmitter code #include int button = 2;   void setup() {     Serial.begin(9600);     vw_set_ptt_inverted(true);     vw_setup(2000);     vw_set_tx_pin(4);     pinMode(button,INPUT);     pinMode(button,LOW);   }   void loop() {     while     (digitalRead(button) == LOW);      sendMessage("1", "5");      //delay(10000);   }   void sendMessage(char* pinCode, char *data) {      if (strlen(data) > 0) {       double startTime = millis();       Serial.println("Sending...");       int msgSize = (strlen(data) + strlen(pinCode) + 1);       char packetData[msgSize];       strcat(packetData, pinCode);       strcat(packetData, ".");       strcat(packetData, data);       Serial.println("Debugging ");       Serial.print("Sending Command: ");       Serial.print(data);       Serial.print(" with Pin Code: ");       Serial.print(pinCode);       Serial.print("\n");       vw_send((uint8_t *)packetData, msgSize);       vw_wait_tx();       double endTime = millis();       double timeTaken = (endTime - startTime);       Serial.print("Time Taken: ");       Serial.print(timeTaken);       Serial.print(" ms\n");     }    } Receiver Code #include   #include   int relay = 8;   byte message[VW_MAX_MESSAGE_LEN];   byte messageLength = VW_MAX_MESSAGE_LEN;   void setup() {     Serial.begin(9600);     vw_set_ptt_inverted(true);     vw_setup(2000);     vw_set_rx_pin(2);     vw_rx_start();     pinMode(relay,INPUT);     pinMode(relay,LOW);   }   void loop() {     while     //(vw_have_message())    (vw_get_message(message, &messageLength;))     {        int command = processResponse((char*)message, 1); //Byte Array Response and Pin Code.        if       // (vw_have_message());        (command) {          Serial.print("Received Command: ");          Serial.print(command);               Serial.print("\n");          digitalWrite (relay,HIGH);        }                   else //REMOVE          delay(100); //REMOVE          digitalWrite (relay,LOW); //REMOVE                 }    } int processResponse(char* message, int pinCode) {       char *p = message;       char *buf;       int o = 0;       int pin;       int command;       while ((buf = strtok_r(p, ".", &p;)) != NULL)  {          if (o == 0) {            pin = atoi(buf);                    } else {            command = atoi(buf);            ;          }          o++;       }       if (pinCode == pin && command > 0) {           return command;                 } else {          return 0;                         }   } This code only sends pin 8 from 0.14 when low to 0.17 when high. unless you remove the three lines marked REMOVE then it goes from 0.14 when low to 4.47 when high but stays there and will not go low when buttton it released. Please help

Topic by Senken  


Virtualwire RF 433mhz Voltage problem

Hi, i am trying to have it switch a 5v relay on pin 8 receiver side only when pin 2 transmitter side in held down. I have set up a XY-MK 5v transmitter , Push button to pin 2 live when pushed 3.3v Data rf transmitter to pin 4 and 5v,gnd and receiver, data pin 2 5v and gnd led to pin 8 and gnd Here are the codes. Transmitter Code= #include const int button = 2; const int transmit_pin = 4; const int receive_pin = 2; const int transmit_en_pin = 3; void setup() {   // Initialise the IO and ISR   Serial.begin(9600);   vw_set_tx_pin(transmit_pin);   vw_set_rx_pin(receive_pin);   vw_set_ptt_pin(transmit_en_pin);   vw_set_ptt_inverted(true); // Required for DR3100   vw_setup(2000);  // Bits per sec } byte count = 1; void loop() {   char msg[7] = {'h','e','l','l','o',' ','#'};   if     (digitalRead(button) == HIGH)   {Serial.println("on its way");   msg[6] = count;   //digitalWrite(led_pin, HIGH); // Flash a light to show transmitting   vw_send((uint8_t *)msg, 7);   Serial.println("on its way");   vw_wait_tx(); // Wait until the whole message is gone   //digitalWrite(led_pin, LOW);   //delay(1000);   count = count + 1; } } And receiver code = #include const int led_pin = 8; const int transmit_pin = 12; const int receive_pin = 2; const int transmit_en_pin = 3; void setup() {     delay(1000);     Serial.begin(9600); // Debugging only     Serial.println("setup");     // Initialise the IO and ISR     vw_set_tx_pin(transmit_pin);     vw_set_rx_pin(receive_pin);     vw_set_ptt_pin(transmit_en_pin);     vw_set_ptt_inverted(true); // Required for DR3100     vw_setup(2000);  // Bits per sec     vw_rx_start();       // Start the receiver PLL running } void loop() {     uint8_t buf[VW_MAX_MESSAGE_LEN];     uint8_t buflen = VW_MAX_MESSAGE_LEN;     if (vw_get_message(buf, &buflen;)) // Non-blocking     { int i;         digitalWrite(led_pin, HIGH); // Flash a light to show received good message // Message with a good checksum received, print it. Serial.print("Got: "); for (i = 0; i < buflen; i++) {      Serial.print(buf[i], HEX);      Serial.print(' '); } Serial.println();         digitalWrite(led_pin, LOW);     } } I have tried many different codes i have found and this works the best but.........the voltage is only going from 0.20v to 0.40 on the receiver pin 8. i need this to be 5v any ideas?

Topic by Senken    |  last reply


Music-Inspired Toilets

The newest meaning of guitar or piano solo. Jammin' Johns--slogan: 'music to your rear'--is a company with a toilet design for the musically inclined.From their web site: After several years of research & development, Jammin' Johns presents our finest quality 'Studio Series'. The products are produced by a guitar factory that manufactures some of the most popular brands of guitars. The 'Studio Series' features our own newly designed ring with chrome hardware for low maintenance. All finishes are of the highest quality and are hand buffed.Even more impressively, the company boasts a famous list of clientele: WIllie Nelson, Dolly Parton, and Steven Spielberg have all purchased a Jammin' John. Thankfully, Spielberg decided against a very painful Jaws-themed toilet.Jammin' Johns via Neatorama

Topic by joshf    |  last reply


Scratched glass fixes? I accidentally scratched the mirrors in my bathroom when sanding the frame. Can this be fixed?

I was in the process of sanding down the wooden frames of my bathroom mirrors preparatory to refinishing them, and I didn't take the mirrors out first (duh!) Anyway, I was using 40 grit sandpaper, because the wood was pretty badly damaged from years of use without proper care, and ended up with some deep and ugly scratches in the glass. Biggest problem is that I'm just renting, so I'd really like to fix the problem before it is noticed by the owner, and having the mirrors replaced would be a financial pain in the neck, to say the least. So, does anybody have any ideas about fixing the scratches? Can I do something like I would with wood, using finer sandpaper in sequence, or will I just have more scratches of varying width and depth? How about buffing or polishing with or without some sort of filler?

Question by artisandyke    |  last reply


Raspberry pi 2 processing capability?

Hearing the announcement of the new latest and greatest Raspberry Pi 2, now a backwards compatible computer with a 0.9GHz ARM Cortex-A7 quad core processor and 1GB of LPDDR2 SDRAM, I was wondering of the feasibility of using it as a very cheap and basic solution for a simple computer for my lab. Currently, I am using a compaq presario C700 Pentium Dual-Core laptop, that has been maxed out with 2GB 800MHz kingston RAM, and is running Kubuntu. I should also not the HDD has been replaced with a 120GB one from an old and broken Xbox. I do not like it much anymore, because although the performance of it is acceptable, the screen is a bit low res, at 1280x800, it's pretty dark (or at least until it 'warms up' to full brightness), it had a major scratch on the screen, (no idea how it got there) and after buffing it out with many methods, including with an eraser, the area has became discolored, like a portion of the screen has higher gamut and brightness, and lower black levels. :( Oh well. The main killer for it is that it's form factor. It is too big, heavy, the screen is too small, and it is very cumbersome to use far away in the corner of my workbench. Of course being a laptop, the 'base' of it is fixed to the screen, and to move it closer to me takes away lots of valuable space on my really messy bench. I mostly use it to research part numbers, get schematics off of google, watch YT videos, log data from serial ports (including my UNI-T multimeter with basic data-logging capabilities), and stuff like that. I may have as many as 20 tabs open at a time, which did tax my old compaq C700 when it had 1GB of RAM, but that was likely due to a memory leak issue with chrome, since I have the SAME issue with my main desktop, with 8GB of DDR3 RAM. If the video by MAKE is anything to judge, it looks just as powerful, as this embedded video is large! https://www.youtube.com/watch?v=pZz8MW3DSqA My hope is to replace it with a raspberry pi, and be able to use it for these basic operations w/ a old cheap LCD monitor which can be picked up off of craigslist for cheap. Generally old 4:3 monitors go for next to nothing. Maybe I can even find one in the dump :P. Maybe I can configure the GPIO pins to be COM ports, w/ clock and everything else! That way an external FTDI chip and using the limited number of USBs is not an issue. Is that possible?

Question by -max-    |  last reply


Raspberry pi 2 processing capability?

Hearing the announcement of the new latest and greatest Raspberry Pi 2, now a backwards compatible computer with a 0.9GHz ARM Cortex-A7 quad core processor and 1GB of LPDDR2 SDRAM, I was wondering of the feasibility of using it as a very cheap and basic solution for a simple computer for my lab. Currently, I am using a compaq presario C700 Pentium Dual-Core laptop, that has been maxed out with 2GB 800MHz kingston RAM, and is running Kubuntu. I should also not the HDD has been replaced with a 120GB one from an old and broken Xbox. I do not like it much anymore, because although the performance of it is acceptable, the screen is a bit low res, at 1280x800, it's pretty dark (or at least until it 'warms up' to full brightness), it had a major scratch on the screen, (no idea how it got there) and after buffing it out with many methods, including with an eraser, the area has became discolored, like a portion of the screen has higher gamut and brightness, and lower black levels. :( Oh well. The main killer for it is that it's form factor. It is too big, heavy, the screen is too small, and it is very cumbersome to use far away in the corner of my workbench. Of course being a laptop, the 'base' of it is fixed to the screen, and to move it closer to me takes away lots of valuable space on my really messy bench. I mostly use it to research part numbers, get schematics off of google, watch YT videos, log data from serial ports (including my UNI-T multimeter with basic data-logging capabilities), and stuff like that. I may have as many as 20 tabs open at a time, which did tax my old compaq C700 when it had 1GB of RAM, but that was likely due to a memory leak issue with chrome, since I have the SAME issue with my main desktop, with 8GB of DDR3 RAM. If the video by MAKE is anything to judge, it looks just as powerful, as this embedded video is large! https://www.youtube.com/watch?v=pZz8MW3DSqA My hope is to replace it with a raspberry pi, and be able to use it for these basic operations w/ a old LCD monitor which can be picked up off of craigslist for cheap. Maybe I can even find one in the dump :P. Maybe I can configure the GPIO pins to be COM and parallel ports, w/ clock, Tx, Rx, and everything else! That way an external FTDI chip and using the limited number of USBs is not an issue. Is that possible?

Question by -max-    |  last reply


Problem in arduino code... you'll have to run this one to understand - Word Clock? Answered

I have been writing this code for the Word clock. I am trying to customize the code to fit into an atmega8, and use DS1307 RTC. Both of these is fine, but what is wrong is that when I upload my code and try to set the time by using the buttons, the time is not setting properly. I can increment minutes with the minutes button to 16, but not further. Hours works fine, but if, lets say the time is 6:36 on the arduino, then If I press the hour button, I find that time changes to 7:31. Five minutes less than what I expected. What am I overlooking here?  I advise to run the code and understand the problem. On the other hand Binary sketch size: 7164 bytes (of a 7168 byte maximum), this is just 4 bytes short of max. Can that be a part of the problem Code: #include // Display output pin assignments #define MTEN  Display1=Display1 | (1<<0)  #define HALF Display1=Display1 | (1<<1) #define QUARTER Display1=Display1 | (1<<2) #define TWENTY Display1=Display1 | (1<<3) #define MFIVE Display1=Display1 | (1<<4) #define MINUTES Display1=Display1 | (1<<5) #define PAST Display1=Display1 | (1<<6) #define UNUSED1 Display1=Display1 | (1<<7) #define TO Display2=Display2 | (1<<0) #define ONE Display2=Display2 | (1<<1) #define TWO Display2=Display2 | (1<<2) #define THREE Display2=Display2 | (1<<3) #define FOUR Display2=Display2 | (1<<4) #define HFIVE Display2=Display2 | (1<<5) #define SIX Display2=Display2 | (1<<6) #define UNUSED2 Display2=Display2 | (1<<7) #define SEVEN Display3=Display3 | (1<<0) #define EIGHT Display3=Display3 | (1<<1) #define NINE Display3=Display3 | (1<<2) #define HTEN Display3=Display3 | (1<<3) #define ELEVEN Display3=Display3 | (1<<4) #define TWELVE Display3=Display3 | (1<<5) #define OCLOCK  Display3=Display3 | (1<<6) #define UNUSED3 Display3=Display3 | (1<<7) #define DS1307_I2C_ADDRESS 0x68  // This is the I2C address #if defined(ARDUINO) && ARDUINO >= 100   // Arduino v1.0 and newer   #define I2C_WRITE Wire.write   #define I2C_READ Wire.read #else                                   // Arduino Prior to v1.0   #define I2C_WRITE Wire.send   #define I2C_READ Wire.receive #endif int  hr=12, mn=00, scnd=0; static unsigned long msTick =0;  // the number of Millisecond Ticks since we last                                  // incremented the second counter int  count; boolean selftestmode; boolean  DS1307Present=false;       // flag to indicate that the 1307 is there..    1 = present char Display1=0, Display2=0, Display3=0; // hardware constants static unsigned int LEDClockPin=5;    //11 d5 ok static unsigned int LEDDataPin=3;    //5 d3 static unsigned int LEDStrobePin=4;   //6 d4 static unsigned int MinuteButtonPin=6;  //d6 12 static unsigned int HourButtonPin=7;    //d7 13 static unsigned int PWMPin = 11; char buf[50]; // time output string for debugging byte decToBcd(byte b) {  return ( ((b/10) << 4) + (b%10) );} // Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte b) {  return ( ((b >> 4)*10) + (b%16) );} void getTime() {   //read from chip and store in hr, mn, scnd   Wire.beginTransmission(DS1307_I2C_ADDRESS);   I2C_WRITE((uint8_t) 0x00);   Wire.endTransmission();     Wire.requestFrom(DS1307_I2C_ADDRESS, 3);   scnd = bcdToDec(I2C_READ());   mn =  bcdToDec(I2C_READ());   hr =  bcdToDec(I2C_READ()); } void setTime() {   //to be paranoid, we're going to first stop the clock   //to ensure we don't have rollovers while we're   //writing:   writeRTCreg(0,0x80);   //now, we'll write everything *except* the second   Wire.beginTransmission(DS1307_I2C_ADDRESS);   I2C_WRITE((uint8_t) 0x01);   I2C_WRITE(mn);   I2C_WRITE(hr);   Wire.endTransmission();   //now, we'll write the seconds; we didn't have to keep   //track of whether the clock was already running, because   //scnd already knows what we want it to be. This   //will restart the clock as it writes the new seconds value.   writeRTCreg(0,scnd); } byte readRTCreg(byte adr) {    if(adr > 0x3F) { return 0xff; }   Wire.beginTransmission(DS1307_I2C_ADDRESS);   I2C_WRITE(adr);   Wire.endTransmission();   Wire.requestFrom(DS1307_I2C_ADDRESS, 1);   return I2C_READ(); } void writeRTCreg(byte adr, byte val) { if(adr > 0x3F) { return; }    Wire.beginTransmission(DS1307_I2C_ADDRESS);    I2C_WRITE(adr);    I2C_WRITE(val);    Wire.endTransmission(); } void print_DS1307time() {   /* Format the time and date and insert into the temporary buffer */   snprintf(buf, sizeof(buf), "RTC time: %02d:%02d:%02d",   hr, mn, scnd);   /* Print the formatted string to serial so we can see the time */   Serial.println(buf); } void setup() {   // initialise the hardware   // initialize the appropriate pins as outputs:   pinMode(LEDClockPin, OUTPUT);   pinMode(LEDDataPin, OUTPUT);   pinMode(LEDStrobePin, OUTPUT);       //pinMode(BrightnessPin, INPUT);   pinMode(MinuteButtonPin, INPUT);   pinMode(HourButtonPin, INPUT);   digitalWrite(MinuteButtonPin, HIGH);  //set internal pullup   digitalWrite(HourButtonPin, HIGH); //set internal pullup   pinMode(PWMPin, OUTPUT);     Serial.begin(9600);   Wire.begin();    // test whether the DS1302 is there   Serial.print("Verifying DS1307 ");   // start by verifying that the chip has a valid signature   if (readRTCreg(0x20) == 0x55) {     // Signature is there - set the present flag and mmove on     DS1307Present=true;     Serial.println("Valid Signature");   }   else   {     // Signature isnt there - may be a new chip -     //   do a write to see if it will hold the signature     writeRTCreg(0x20,0x55);     if (readRTCreg(0x20) == 0x55) {       // We can store data - assume that it is a new chip that needs initialisation /*      // Start by clearing the clock halt flag.           //"Bit 7 of register 0 is the clock halt (CH) bit.           //When this bit is set to a 1, the oscillator is disabled."             byte _reg0_sec = decToBcd(scnd);             _reg0_sec = _reg0_sec & ~0x80;             writeRTCreg(0,_reg0_sec); */       // Set the time and date on the chip       scnd = 0;       mn = 0;       hr = 12;       setTime();       // set the DS1302 present flag       DS1307Present=true;       Serial.println("present - new chip initialised.");     }     else  Serial.println("absent");   }    msTick=millis();      // Initialise the msTick counter     selftest();   selftestmode=false;   if (DS1307Present) {     // Get the current time and date from the chip    getTime();     }     displaytime();        // display the current time } void ledsoff(void) { Display1=0; Display2=0; Display3=0; } void WriteLEDs(void) { // Now we write the actual values to the hardware shiftOut(LEDDataPin, LEDClockPin, MSBFIRST, Display3); shiftOut(LEDDataPin, LEDClockPin, MSBFIRST, Display2); shiftOut(LEDDataPin, LEDClockPin, MSBFIRST, Display1); digitalWrite(LEDStrobePin,HIGH); delay(2); digitalWrite(LEDStrobePin,LOW); } void selftest(void){   Serial.print("TEST");   analogWrite(PWMPin, 255);     ledsoff(); MTEN; WriteLEDs(); delay(500);   ledsoff(); HALF; WriteLEDs(); delay(500);   ledsoff(); QUARTER; WriteLEDs(); delay(500);   ledsoff(); TWENTY; WriteLEDs(); delay(500);   ledsoff(); MFIVE; WriteLEDs(); delay(500);   ledsoff(); MINUTES; WriteLEDs(); delay(500);   ledsoff(); PAST; WriteLEDs(); delay(500);   ledsoff(); TO; WriteLEDs(); delay(500);   ledsoff(); ONE; WriteLEDs(); delay(500);   ledsoff(); TWO; WriteLEDs(); delay(500);   ledsoff(); THREE; WriteLEDs(); delay(500);   ledsoff(); FOUR; WriteLEDs(); delay(500);   ledsoff(); HFIVE; WriteLEDs(); delay(500);   ledsoff(); SIX; WriteLEDs(); delay(500);   ledsoff(); SEVEN; WriteLEDs(); delay(500);   ledsoff(); EIGHT; WriteLEDs(); delay(500);   ledsoff(); NINE; WriteLEDs(); delay(500);   ledsoff(); HTEN; WriteLEDs(); delay(500);   ledsoff(); ELEVEN; WriteLEDs(); delay(500);   ledsoff(); TWELVE; WriteLEDs(); delay(500);   ledsoff(); OCLOCK; WriteLEDs(); delay(500); } void displaytime(void){   // start by clearing the display to a known state   ledsoff();     Serial.print("It is ");   // now we display the appropriate minute counter   if ((mn>4) && (mn<10)) {     MFIVE;     MINUTES;     Serial.print("Five Minutes ");   }   if ((mn>9) && (mn<15)) {     MTEN;     MINUTES;     Serial.print("Ten Minutes ");   }   if ((mn>14) && (mn<20)) {     QUARTER;       Serial.print("Quarter ");   }   if ((mn>19) && (mn<25)) {     TWENTY;     MINUTES;     Serial.print("Twenty Minutes ");   }   if ((mn>24) && (mn<30)) {     TWENTY;     MFIVE;     MINUTES;     Serial.print("Twenty Five Minutes ");   }    if ((mn>29) && (mn<35)) {     HALF;     Serial.print("Half ");   }   if ((mn>34) && (mn<40)) {     TWENTY;     MFIVE;     MINUTES;     Serial.print("Twenty Five Minutes ");   }    if ((mn>39) && (mn<45)) {     TWENTY;     MINUTES;     Serial.print("Twenty Minutes ");   }   if ((mn>44) && (mn<50)) {     QUARTER;     Serial.print("Quarter ");   }   if ((mn>49) && (mn<55)) {     MTEN;     MINUTES;     Serial.print("Ten Minutes ");   }   if (mn>54) {     MFIVE;     MINUTES;     Serial.print("Five Minutes ");   }   if ((mn <5))   {     switch (hr) {     case 1:       ONE;       Serial.print("One ");       break;     case 2:       TWO;       Serial.print("Two ");       break;     case 3:       THREE;       Serial.print("Three ");       break;     case 4:       FOUR;       Serial.print("Four ");       break;     case 5:       HFIVE;       Serial.print("Five ");       break;     case 6:       SIX;       Serial.print("Six ");       break;     case 7:       SEVEN;       Serial.print("Seven ");       break;     case 8:       EIGHT;       Serial.print("Eight ");       break;     case 9:       NINE;       Serial.print("Nine ");       break;     case 10:       HTEN;       Serial.print("Ten ");       break;     case 11:       ELEVEN;       Serial.print("Eleven ");       break;     case 12:       TWELVE;       Serial.print("Twelve ");       break;     }   OCLOCK;   Serial.println("O'Clock");   }   else     if ((mn < 35) && (mn >4))     {       PAST;       Serial.print("Past ");       switch (hr) {     case 1:       ONE;       Serial.println("One ");       break;     case 2:       TWO;       Serial.println("Two ");       break;     case 3:       THREE;       Serial.println("Three ");       break;     case 4:       FOUR;       Serial.println("Four ");       break;     case 5:       HFIVE;       Serial.println("Five ");       break;     case 6:       SIX;       Serial.println("Six ");       break;     case 7:       SEVEN;       Serial.println("Seven ");       break;     case 8:       EIGHT;       Serial.println("Eight ");       break;     case 9:       NINE;       Serial.println("Nine ");       break;     case 10:       HTEN;       Serial.println("Ten ");       break;     case 11:       ELEVEN;       Serial.println("Eleven ");       break;     case 12:       TWELVE;       Serial.println("Twelve ");       break;       }     }     else     {       // if we are greater than 34 minutes past the hour then display       // the next hour, as we will be displaying a 'to' sign       TO;       Serial.print("To ");       switch (hr) {       case 1:         TWO;        Serial.println("Two ");        break;       case 2:         THREE;       Serial.println("Three ");         break;       case 3:         FOUR;       Serial.println("Four ");         break;       case 4:         HFIVE;       Serial.println("Five ");         break;       case 5:         SIX;       Serial.println("Six ");         break;       case 6:         SEVEN;       Serial.println("Seven ");         break;       case 7:         EIGHT;       Serial.println("Eight ");         break;       case 8:         NINE;       Serial.println("Nine ");         break;       case 9:         HTEN;       Serial.println("Ten ");         break;       case 10:         ELEVEN;       Serial.println("Eleven ");         break;       case 11:         TWELVE;       Serial.println("Twelve ");         break;       case 12:         ONE;       Serial.println("One ");         break;       }     }    WriteLEDs();    } void incrementtime(void){   // increment the time counters keeping care to rollover as required   scnd=0;   if (++mn >= 60) {     mn=0;     if (++hr == 13) {       hr=1;      }   }    // debug outputs   Serial.println(); //  if (DS1307Present) //  print_DS1307time(); //  else{ //  Serial.print("Arduino Time: " );   Serial.print(hr);   Serial.print(":");   Serial.print(mn);   Serial.print(":");   Serial.println(scnd); //  } } void loop(void) {     //selftest(); int aread = sq(analogRead(3)/4)+3;   //Uncomment the following line and comment the next one in order to   //  enable dimming via a potentiometer connected to pin 0:   analogWrite(PWMPin, aread>255 ? 255:aread);   //analogWrite(PWMPin, 255);       // heart of the timer - keep looking at the millisecond timer on the Arduino     // and increment the seconds counter every 1000 ms     if ( millis() - msTick >999) {         msTick=millis();         scnd++; /*        // Flash the onboard Pin13 Led so we know something is hapening!         digitalWrite(13,HIGH);         delay(100);         digitalWrite(13,LOW);    */    }                 //test to see if we need to increment the time counters     if (scnd==60)     {       incrementtime();       displaytime();     } if (DS1307Present) {     // Get the current time and date from the chip      getTime();     }     // test to see if a forward button is being held down     // for time setting     if ( (digitalRead(MinuteButtonPin) ==0 ) && scnd!=1)       // the forward button is down       // and it has been more than one second since we       // last looked     {       mn=(((mn/5)*5) +5);       scnd=0;       incrementtime();       scnd++;  // Increment the second counter to ensure that the name       // flash doesnt happen when setting time       if (DS1307Present) {       // Set the time on the chip       setTime();     }     delay(100);       displaytime();     }     // test to see if the back button is being held down     // for time setting     if ((digitalRead(HourButtonPin)==0 ) && scnd!=1)     {       /*       minute=(((minute/5)*5) -5);       second=0; // decrement the minute counter       if (minute<0) {         minute=55;         if (--hour <0) hour=12;       }       */             mn = (mn/5)*5;  //round minute down to previous 5 min interval       if (++hr == 13) {         hr=1;        }       incrementtime();       scnd++;  // Increment the second counter to ensure that the name       // flash doesnt happen when setting time        if (DS1307Present) {       // Set the time and date on the chip       setTime();     }     delay(100);       displaytime();     } }

Question by pro2xy    |  last reply


USB Telescope, Chocolate Strawberries, Custom Snowboard,...

Sign-up for our newsletter here. Feb. 21, 2008 Welcome back! The Share the Love: Valentine's Day Speed Contest ends this Sunday, so get your romantic Instructables up this weekend! The winners of the Get the LED Out! Speed Contest have been announced. See who won here! Check out these cool instructables! Conductive Fabric: Make Flexible Circuits Using An Inkjet Printer Easily turn out flexible circuits to create some funky projects. posted by mikey77 on Feb 14, 2008 Remote shutter trigger for digital cameras Make a remote shutter release for your Canon digital camera (and some other brands) for about three bucks in under five minutes. posted by deth2all on Feb 20, 2007 How To Shave Without Getting Razor Bumps Here's how to avoid those little ingrown hairs known as razor bumps. posted by SteamKit on Feb 18, 2008 A better laptop stand for bed Make a simple but incredibly useful Laptop Stand for around $15 and 30-60 minutes! Great for use in bed while typing, browsing, and watching movies. posted by jumpfroggy on Feb 13, 2008 Simulated wood grain for metal boxes Prepare a metal box using a buffing technique that can simulate wood grain, birdseye or other finishes for a sleek look. posted by amz-fx on Feb 15, 2008 Spread the knowledge! Contest closes this weekend! Win a $350 Yoyo! A Dozen Red Origami Roses A unique twist to the traditional giving of roses to a loved one. Handmade origami roses are everlasting and inexpensive to& make. posted by thydzik on Feb 15, 2007 Cardboard Savonius Wind Turbine Build a Savonius wind turbine made out of cardboard to see what works. Low-tech rapid prototyping at its best. posted by rhackenb on Feb 16, 2008 How to Eat a Banana Like a Monkey OK, the actual eating isn't too different from humans. The real magic is in how monkeys peel their banana to get at the goodness inside. posted by fungus amungus on Feb 20, 2008 Build a real bell-striking clock for your PC Sound effects on a computer can't match the nice tones you can get from a real bell. Here's how to put the two together. posted by 5Volt on Feb 18, 2008 Make a Bloody Valentine's Heart Present your loved one with this anatomically-correct heart, a card ("You have my heart!"), and a ring hidden in the heart for a day to remember forever. posted by theprojectmaker on Feb 16, 2008 Show us your yarn! The Lion Brand Yarn Challenge has closed for entries, so it's time to vote for your favorites. Here are some more of the over 450 projects entered - rate your favorites, talk to the crafters, and get inspired. The Lion Brand group lives on, so keep posting your yarn creations! Bike Kippah Skirt Afghan Bootcovers   Now go make something awesome, and I'll see you next week! - Eric

Topic by fungus amungus  


Data updating on thingspeak (cloude) only once

 I am trying to update Thingspeak using Edison. It updates thingspeak but only at once. If I have to update again I have to run the code again. #include #include // ThingSpeak Settings char thingSpeakAddress[] = "api.thingspeak.com";  //TS String writeAPIKey = "**************";    //TS const int updateThingSpeakInterval = 20 * 1000;      // Time interval in milliseconds to update ThingSpeak (number of seconds * 1000 = interval) char ssid[] = "*********";     //  your network SSID (name) char pass[] = "*********";  // your network password int status = WL_IDLE_STATUS;     // the Wifi radio's status // initialize the library instance: WiFiClient client; String stringVal = ""; // Variable Setup long lastConnectionTime = 0; boolean lastConnected = false; int failedCounter = 0; int a; float tempC; int B=3975; float resistance; void setup() {   //Initialize serial and wait for port to open:   Serial.begin(115200);    while (!Serial) {     } //  check for the presence of the shield: // if (WiFi.status() == WL_NO_SHIELD) {   //   Serial.println("WiFi shield not present");     // don't continue:     //while(true); //} // attempt to connect to Wifi network:   while ( status != WL_CONNECTED) {     Serial.print("Attempting to connect to WPA SSID: ");     Serial.println(ssid);     // Connect to WPA/WPA2 network:       status = WiFi.begin(ssid, pass);     // wait 10 seconds for connection:     delay(10000);      }     // you're connected now, so print out the data:   Serial.println("You're connected to the network");   // printCurrentNet();   // printWifiData(); }   void loop() { a = analogRead(0); resistance=(float)(1023-a)*10000/a; tempC=1/(log(resistance/10000)/B+1/298.15)-273.15; // converts temp  to string      stringVal += String(int(tempC))+ "."+String(getDecimal(tempC)); //char buf[16]; //String strTemp = floatToString(16 , cel , 5); //Serial.println(strTemp); // Print Update Response to Serial Monitor   while (client.available())   {     char c = client.read();     Serial.print(c);   }   // Disconnect from ThingSpeak   if (!client.connected() && lastConnected )   {     Serial.println("...disconnected");     Serial.println();        client.stop();     }   // Update ThingSpeak   if(client.connected() && (millis() - lastConnectionTime > updateThingSpeakInterval))   {     updateThingSpeak("field1="+stringVal);      Serial.print( stringVal);          Serial.println("C");      delay(1000);      Serial.println();         }   lastConnected = client.connected(); } //function to extract decimal part of float long getDecimal(float val) { int intPart = int(val); long decPart = 100*(val-intPart); //I am multiplying by 100 assuming that the foat values will have a maximum of 3 decimal places                                    //Change to match the number of decimal places you need if(decPart>0)return(decPart);           //return the decimal part of float number if it is available else if(decPart<0)return((-1)*decPart); //if negative, multiply by -1 else if(decPart=0)return(00);           //return 0 if decimal part of float number is not available } void updateThingSpeak(String  stringVal) {   if (client.connect(thingSpeakAddress, 80))   {            client.print("POST /update HTTP/1.1\n");     client.print("Host: api.thingspeak.com\n");     client.print("Connection: close\n");     client.print("X-THINGSPEAKAPIKEY: "+writeAPIKey+"\n");     client.print("Content-Type: application/x-www-form-urlencoded\n");     client.print("Content-Length: ");     client.print( stringVal.length());     client.print("\n\n");     client.print( stringVal);        lastConnectionTime = millis();        if (client.connected())     {       Serial.println("Connecting to ThingSpeak...");       Serial.println();            failedCounter = 0;     }     else     {       failedCounter++;       Serial.println("Connection to ThingSpeak failed ("+String(failedCounter, DEC)+")");        Serial.println();     }      }   else   {     failedCounter++;        Serial.println("Connection to ThingSpeak Failed ("+String(failedCounter, DEC)+")");      Serial.println();        lastConnectionTime = millis();   } } after running this code I get this(image attached)

Question by ANINDYAB5    |  last reply


Conductive Fabric, Bloody Heart, Origami Roses...

Sign-up for our newsletter here. Feb. 21, 2008 Welcome back! The Share the Love: Valentine's Day Speed Contest ends this Sunday, so get your romantic Instructables up this weekend! The winners of the Get the LED Out! Speed Contest have been announced. See who won here! Check out these cool instructables! Conductive Fabric: Make Flexible Circuits Using An Inkjet Printer Easily turn out flexible circuits to create some funky projects. posted by mikey77 on Feb 14, 2008 Remote shutter trigger for digital cameras Make a remote shutter release for your Canon digital camera (and some other brands) for about three bucks in under five minutes. posted by deth2all on Feb 20, 2007 How To Shave Without Getting Razor Bumps Here's how to avoid those little ingrown hairs known as razor bumps. posted by SteamKit on Feb 18, 2008 A better laptop stand for bed Make a simple but incredibly useful Laptop Stand for around $15 and 30-60 minutes! Great for use in bed while typing, browsing, and watching movies. posted by jumpfroggy on Feb 13, 2008 Simulated wood grain for metal boxes Prepare a metal box using a buffing technique that can simulate wood grain, birdseye or other finishes for a sleek look. posted by amz-fx on Feb 15, 2008 Spread the knowledge! Contest closes this weekend! Win a $350 Yoyo! A Dozen Red Origami Roses A unique twist to the traditional giving of roses to a loved one. Handmade origami roses are everlasting and inexpensive to& make. posted by thydzik on Feb 15, 2007 Cardboard Savonius Wind Turbine Build a Savonius wind turbine made out of cardboard to see what works. Low-tech rapid prototyping at its best. posted by rhackenb on Feb 16, 2008 How to Eat a Banana Like a Monkey OK, the actual eating isn't too different from humans. The real magic is in how monkeys peel their banana to get at the goodness inside. posted by fungus amungus on Feb 20, 2008 Build a real bell-striking clock for your PC Sound effects on a computer can't match the nice tones you can get from a real bell. Here's how to put the two together. posted by 5Volt on Feb 18, 2008 Make a Bloody Valentine's Heart Present your loved one with this anatomically-correct heart, a card ("You have my heart!"), and a ring hidden in the heart for a day to remember forever. posted by theprojectmaker on Feb 16, 2008 Show us your yarn! The Lion Brand Yarn Challenge has closed for entries, so it's time to vote for your favorites. Here are some more of the over 450 projects entered - rate your favorites, talk to the crafters, and get inspired. The Lion Brand group lives on, so keep posting your yarn creations! Bike Kippah Skirt Afghan Bootcovers   Now go make something awesome, and I'll see you next week! - Eric

Topic by fungus amungus  


Sharpening knifes and similar tools

On the weekend a friend of mine asked me if I could get his 2 fishing knifes ready for the season.Being a nice guy I agreed as they were so blunt that you could sit on the knifes edge without even getting a scratch.Did just the usual, you know, cleaning it first, grinding a proper angle back on it with a very coarse stone, sharpening from a 300 grit down to a 1000 grit and then of course polishing and removing the burr.Was quite pleased with the result and decided to bring the finnished knifes back to my friend....There are several ways to check if a knife is sharp.Most know the newpaper cutting thing.Some dare to try if the knife i able to shave some hair off.And a few actually know that it is enough to check if it won't slip of your fingernail.My friend however was used to knifes that I would consider to be piece of steel with a rounded edge...Of course he had to try to run his finger down the blade and before I could stop him....He said "Feels nice and smooth but I think you ruined the edge with your polishing!".I only said "Get some bandaids before you check your finger and reconsider."Lets just say about 10 seconds after his test he started bleeding like a pig.He actually managed to get the cut about 5mm deep :(We agreed that it would be best to keep these knifes in the boat and to put a note on them so he won't check their sharpness again.There are tons of tutorials and videos showing various ways of sharpening a knife that can be used as a general reference.But if you already know all the basic while still struggling a bit to get the edge and sharpness you desire:The most important thing to know is what type of steel is used in your blade.I don't mean the grade or composition, just the difference between stainless steel and old style steel that is able to rust.You never want to sharpen a stainless steel blade with a stone that is well used on normal steel.If in doubt clean it out!The reason behind is that you cause the steel that is able to oxidise or rust to be worked into the stainless steel surface.In the worst case this can cause rust spots or smalle pits in your sharpened edge.When it comes to restoring the edge of a well worn knife some beginners and so called expert struggle to keep the angle and edge itself even and straight.Tools to overcome this are available, like these guides for a diamond stone on a stick where you cplamp your blade in.There are also "trolleys" that hold your blade at a fixed angle on the stone by means of small wheels.Both have their uses but also a lot of limitations, especially when it comes to the rounded parts of a blade, like the tip or filet knife that is generally curved a bit.Special knifes like the old Kukri knifes have a curved part that goes to the inside, these are a true pain with normal grinding and honing stones, so I will leave them out here, but feel free to ask in the comments if you need more info.The best way I found for restoring a rounded knifes edge without special tools is by using a long diamond file.Preferably with a quite long handle and not too wide.Like with the guide tools the key is to cheat your way through ;)But unlike most guide tools you will still keep the same angle in the curved parts ;)Here are the basic tool required:Long handled diamond fileSome wooden block or similar to get work platforms of different heights (lego blocks work too)A long enough clamp to secure your blade on the block(s)For the last you can also make a screw clamp like a hinge to hold the blade in place.You want to knife to be secured so it won't move and so that you can reach all parts of the edge with the file.Depening on what side you work on or what you prefer the file will rest with the handle either above or below the knife.With the length of the handle you can adjust the required angle, preferably in the 20-25° region.For the straight parts of the blade you work in overlapping sections.Rest the handl so it aligns close to the knifes handle and move the file along the knifes edge.It helps to use a permanent marker on the endge to visualise where you take material off and to check the work area creates a parallel area in the painted bits.When you see some material removed move the handle of the file a bit further towards the pointy bit and continue to create the parallel boundaries.Kepp going back and forth along the straight part of the blade until there is only a tiny area left on the edge where the marker stays visible.For the rounded tip part you place the handle so you can follow the curve on the knife at the same angle as on the straight part.Most knife have this area badly neglected once well used so you might end up with a slightly wider area where material is removed.Once the edge is all reduced to the same slim marker line it is time to repaet the process on the other side at the same angle you used before.Don't be too scared to see in a close up that your edge is not perfectly even or straight, a few imperfections will be buffed out in the next step.To finnish the edge and smooth it out you use a flat stone or diomand plate of similar grid to the file, for example 300.If you do this step right you won't even need fancy guides or tricks after doing it a few times.The key from now on is keep an even angle that matches your initial angle to restore the edge.The old masters were right here to use stones that are either secured tightly in a wooden frame or "clamped" down by a leather strap.Apart from needing a perfectly clean and flat surface on the stone and movement will cause a more or less rounded edge again.Every use one of these fancy chesse slicers that work like a potato peeler?You wanna do the same with your knife on the stone.With the stone in front of you start at the far end and move the blade down like you want to cut a thin slice of the stone.Always with the edge towards you like cutting something off, never the other way around.If you don't mount your stone too high you will notics that it is quite easy to use your palms as a guide to keep an even angle throughout a cutting stroke.To find the right angle you again cheat with a marker.But no matter what type of stne or diamond sharpener you use: use lube!!The coarse types usually are fine with water, diomand anyway, finer or so called "oil sones" require honing oil.Do a few strokes and check the marks you left on the marker.Adjust until you get about the same work area cleaned as in the previous step with the file.You will soon see that there are now uneven areas which cause a wobbly outline on the marker.Continue with this grit until you get a nice and even outline.For the rounded tip area you do it similar but with a slight twisting motion.It can help to do a few dry runs on a piece of cardboard to find the right twist.Simply place the rounded part on the cardboard at the approx angle for the sharpening.Now move the handle so the edge follows the curve on the cardboard - the circular motion you need to get from the straight part to the tip is the "twist" you want during the sharpeing of this area.Again, once satisfied do the same on the other side.Now it is time to decide if you want to keep the angle all the way or if you prefer a beveled edge with a slightly wider angle for actual cutting edge.The later is good for knifes that see a lot of abuse and hard work, the first for everything that needs to be really sharp.I prefer sharp so lets continue with this and if you can't figure out how to get a second agnle on the edge ask me in the comments ;)Depending on the quality of your blade you now need to work your way up the grid.If your edge (the part with marker left) is more than half a mm wide you might want to keep going with 300 grit until no marker is left and the edge develops a slight bur on the other side.From now on cleaning the blade and stone every few minutes is a good thing!Rinse it off, wipe it off, flush it off, whatever works best to keep it clean.If you go to 600 grit you will clearly see the difference in the work area.The scratches buff out an the surface becomes smooth.You keep doing the same slicing technique but only do as many strokes as required to get a slight bur throughout the edge on the other side.You will feel it when you move your finger along the side, one feels smooth, one feel very rough.Areas that stay smooth indicate that there is either still material to be removed or that you created a small dint while sharpening - the marker will tell you.Once you get a bur with just a few strokes you know the edge is there.Time to move the next higher grit you have available.From here on you might need to use oil instead of water and depending on the type of stone you will need to leave some slurry on the stone - check the manual ;)Either way the procedure is still the same: Slice a thin piece off until you get a bur.Then do the other side until both are even.Assuming around 1000 grid is the usual max on a hobby level and that you don't have any finer stone it is now time to take of the bur on the edge.No matter what you try there will always be some but created when sharpening.A lot can be prevented and smoothed out though.To do this you reduce the pressure during the last few strokes and turn the knife around often.When you get to the point where a single stroke causes a bur and another single stroke on the other side inverts the bur the knife is almost ready.Polishing a knifes edge can cause a bit of bluntness.For obvious reasons it is best to sharpen to the honing point where a 5000 - 20000grit wet stone is used, but these are quite expensive and require special care.In other cases like our example here you need to make the best out of it:Get some sturdy old leather like some belt.Use proper glue and clamps to glue it onto a really flat piece of wood.You want the smooth side glued and the rough side of the leather facing up.Prepare the leather with some kitchen knife that is need of sharpening anyway by placing it almost flat onto the strip with the edge facing away from you.With good pressure move the blade toward you.You will have to do this several times to align the fibres in one direction only.Now get some metal polishing paste or if nothing else polishing wax for metal - the fine stuff for the wax type please.Rub it in and work in with the kitchen kifes the same as bafore, always in the same direction.You will create a bit of a mess but that does not matter for now.The leather will become more and more smoth on the surface until it appear quite even.Clean the excess off and grab the real knife.There is now enough lube and polishing material in the leather to last quite a while.Start with the knife as flat as possible, again the edge facing away from you when you move the knife in a slicing motion towards you.Do this for a few minutes and you will see that the sharpened edge becomes shiny where it goes into the knifes body.Once all is polished increase the angle slightly and repeat.In a perfect world the polishing should now go almost to the last bit of the edge, only leaving a very thin rough line.This last line is the critical bit.There are two ways to deal with it, pressure or time.If you keep the last used angle but increase your pressure the blade will go deeper into the leather and the polishing should reach the front of the edge.In the other case you slightly increase you angle but only use very little pressure, more like letting the knife rest on the leather while you move it along.In either case you check the edge often with your finger and once it feel really smooth throuout you stop.Turn the knife over often during this last step as even with the polishing you create a slight bur.Only repeated turning and using as little pressure as possible will remove this last bur on both sides.If you know think your knife is still not sharp enough than you might just have a very cheap knife... ;)

Topic by Downunder35m    |  last reply