PaulS - 40,000 posts!

Congrats to PaulS. 40,000 posts! Wow.

PaulS 40003 Grumpy_Mike 27899 AWOL 21325 CrossRoads 19364 leo72 19016 uwefed 17450 nickgammo 17217 retrolefty 15662 menniti 11346 Coding Badly 11008 robtillaart 10641

Just eclipses the other current 5 digit posters ...

CrossRoads: PaulS 40003 Grumpy_Mike 27899 AWOL 21325 CrossRoads 19364 leo72 19016 uwefed 17450 nickgammo 17217 retrolefty 15662 menniti 11346 Coding Badly 11008 robtillaart 10641

Just eclipses the other current 5 digit posters ...

As if size really matters. ;)

Lefty

retrolefty: As if size really matters. ;)

Lefty

No but it is worth a congrats. ]:D Congratulations Paul on this incredible number of posts. best regards Jantje

Congrats, Paul! I made a special display in honour of your achievement:

Yes, that’s blue-tack on the left. My hardware skills aren’t that great.

Code to reproduce:

#include <SPI.h>

// MAX7219 registers

const byte MAX7219_REG_NOOP        = 0x0;
// codes 1 to 8 are digit positions 1 to 8
const byte MAX7219_REG_DECODEMODE  = 0x9;
const byte MAX7219_REG_INTENSITY   = 0xA;
const byte MAX7219_REG_SCANLIMIT   = 0xB;
const byte MAX7219_REG_SHUTDOWN    = 0xC;
const byte MAX7219_REG_DISPLAYTEST = 0xF;

// 7-segments patterns for digits 0 to 9
const byte digits [10] = {
  0b1111110,  // 0
  0b0110000,  // 1
  0b1101101,  // 2
  0b1111001,  // 3
  0b0110011,  // 4
  0b1011011,  // 5
  0b1011111,  // 6
  0b1110000,  // 7
  0b1111111,  // 8
  0b1111011,  // 9
};

// send one byte via  SPI to MAX7219
void sendByte (const byte reg, const byte data)
  {    
  digitalWrite (SS, LOW);
  SPI.transfer (reg);
  SPI.transfer (data);
  digitalWrite (SS, HIGH); 
  }  // end of sendByte

// send one character (data) to position (pos) with or without decimal place
// pos is 0 to 7
// data can be '0' to '9' plus various other things as below
void sendChar (const byte pos, const char data, const bool dp = false)
  {
  byte converted;  
  switch (data)
    {
    case '0' ... '9' : converted = digits [data - '0']; break;
    case '-':          converted = 0b0000001;  break;  
    case 'A':          converted = 0b1110111;  break;  
    case 'b':          converted = 0b0011111;  break;  
    case 'c':          converted = 0b0001101;  break;  
    case 'C':          converted = 0b1001111;  break;  
    case 'd':          converted = 0b0111101;  break;  
    case 'E':          converted = 0b1001111;  break;  
    case 'F':          converted = 0b1000111;  break;  
    case 'h':          converted = 0b0010111;  break;  
    case 'H':          converted = 0b0110111;  break;  
    case 'L':          converted = 0b0001110;  break;  
    case 'o':          converted = 0b0011101;  break;  
    case 'P':          converted = 0b1100111;  break;  
    case 'r':          converted = 0b0000101;  break;  
    case 'S':          converted = 0b1011011;  break;  
    case 't':          converted = 0b0000111;  break;  
    case 'u':          converted = 0b0011100;  break;  
    case 'U':          converted = 0b0111110;  break;  
    case ' ':          converted = 0b0000000;  break;  
    case 'I':          converted = digits [1]; break;
    
    default:           converted = 0b0000001;  break;  // -
    } // end of switch  
  if (dp)
    converted |= 0b10000000;
  sendByte (8 - pos, converted);
  }  // end of sendChar
  
// write an entire null-terminated string to the LEDs
void sendString (const char * s)
{
  byte pos;
  
  for (pos = 0; pos < 8 && *s; pos++)
    {
    boolean dp = s [1] == '.';
    sendChar (pos, *s++, dp);   // turn decimal place on if next char is a dot
    if (dp)  // skip dot
      s++;
    }
    
  // space out rest
  while (pos < 8)
    sendChar (pos++, ' ');
}  // end of sendString

void setup() 
  {
  SPI.begin ();

  sendByte (MAX7219_REG_SCANLIMIT, 7);      // show 8 digits
  sendByte (MAX7219_REG_DECODEMODE, 0);     // use bit patterns
  sendByte (MAX7219_REG_DISPLAYTEST, 0);    // no display test
  sendByte (MAX7219_REG_INTENSITY, 7);      // character intensity: range: 0 to 15
  sendByte (MAX7219_REG_SHUTDOWN, 1);       // not in shutdown mode (ie. start it up)

  sendString ("PAULS");
  delay (10000);
  sendString ("40000");
  } // end of setup

void loop () {}

For anyone that wants to make one, the MAX7219 board is available from eBay for around $10.

Yes that is some total. Well done Paul, hats off to you.

And on behalf of the recipients of those posts - thank you for your help .

Wait a minute, he's still a Brattain Member. What do you have to do to advance past that? 50,000 posts?

And what's the level called? Curmudgeon? 8)

"a person (especially an old man) who is easily annoyed or angered and who often complains" Maybe not, that is a bit on the harsh side :fearful:

CrossRoads:
And what’s the level called? Curmudgeon? 8)

“a person (especially an old man) who is easily annoyed or angered and who often complains”
Maybe not, that is a bit on the harsh side :fearful:

Curmudgeon would be a good name for the next level. I made up some “Curmudgeon” certificates at work once and handed a couple out. Kept one for myself of course :smiley:

I was all confused. I was running a recent project that Nick posted, I thought it was a real-time display of Paul’s post count. Now that I read closer, I find it’s prime numbers or some such thing.

Just the same Paul, WAY TO GO!

"a person (especially an old man) who is easily annoyed or angered and who often complains"

That sounds a bit grumpy ?

Given that this theme (50K Member level) has been touched, I'd honor a living Italian genius of our time: Federico Faggin. Regards!

http://www.computerhistory.org/fellowawards/hall/bios/Federico,Faggin/

Nope, he's still alive! Gotta be somebody older, like Shockley

http://www.nytimes.com/learning/general/onthisday/bday/0213.html

"Trial and Error

The team of Dr. Shockley, Dr. Brattain and Dr. Bardeen started out with the concept of the tubeless radio and proceeded from there by trial and error or, as Dr. Shockley later put it, by ''creative-failure methodology.''

''A basic truth that the history of the creation of the transistor reveals,'' he said, ''is that the foundations of transistor electronics were created by making errors and following hunches that failed to give what was expected.''

The team eventually chose silicon and germanium for their semiconductor and, in a rush of discoveries, reached the breakthroughs and successes that produced Dr. Shockley's ''magic month'' of 1947.

The devices, called transistors because they transferred current across a resistor, were built into a telephone, a radio and a television unit that Bell used in making the public introduction at a press conference in June 1948."

‘‘creative-failure methodology.’’

Sounds like my programming style 8)

''creative-failure methodology.''

Sounds like my life so far, hopefully the next 65 years will be more organised ( I did clear my bench at the weekend )

[quote author=Jack Christensen link=topic=193907.msg1433370#msg1433370 date=1382098180] I was all confused. I was running a recent project that Nick posted, I thought it was a real-time display of Paul's post count. Now that I read closer, I find it's prime numbers or some such thing. [/quote]

Yes, that was a similar project. But as my prime numbers are in the 8-digit range now, I soldered together another of those display boards I had lying around.

I should probably have the prime-number generator save its current progress into EEPROM every 10 minutes or so, in case of power loss.

CrossRoads: PaulS 40003 Grumpy_Mike 27899 AWOL 21325 :

I think PaulS needs to get out a bit more ;)

CrossRoads: And what's the level called? Curmudgeon? 8)

I realise that there are many contenders for the Father of the Computer accolade, but how about Turing Member. I think it has a nice ring to it and he was one smart fella XD

http://en.wikipedia.org/wiki/Alan_Turing