This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
haas:fall2024:c4eng:projects:stl2 [2024/09/30 14:08] – created wedge | haas:fall2024:c4eng:projects:stl2 [2024/10/07 10:55] (current) – [Components and wiring] wedge | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ======STL2====== | + | <WRAP centeralign round box> |
+ | < | ||
+ | < | ||
+ | </ | ||
- | =====loops===== | + | ======PROJECT: Seeing The Light (STL2)====== |
- | ====for loop==== | + | =====OBJECTIVE===== |
+ | Time to explore optimizing our logic further, through the use of a loop and demonstrating the effectiveness of our logic by scaling up the number of LEDs in our counter (to at least 8). | ||
- | ====while loop==== | + | =====PROCESS===== |
+ | Do note, the productive way to go about this project involves taking the following steps: | ||
- | ====do-while loop==== | + | * starting early |
+ | * reading the project page | ||
+ | * asking questions regarding things you do not know, are not clear on, or are confused about | ||
+ | * as information, | ||
- | =====bitwise operations===== | + | If you start too late, and do not ask questions, and do not have enough time and don't know what is going on, you are not doing the project correctly. |
- | ====bitwise AND==== | + | =====TASK===== |
+ | After exploring, assembling, and testing the intended circuit (8+ LEDs), adapt the provided C code to use the bank of connected LEDs to count in binary from 00000000 to at least 11111111 (0 to 255). | ||
- | ====logical left shift==== | + | Using the current value of count, your task is to make use of ONE **if** statement and copious use of **bitwise logic** to determine from an ongoing count the state of the individual bits. |
+ | |||
+ | It is your task to write a C program that interfaces successfully with the eight or more independently connected LED circuits, arranged in some orientation to ascertain an order or positioning, | ||
+ | |||
+ | If " | ||
+ | |||
+ | < | ||
+ | 0 0 0 0 0 0 0 0 | ||
+ | 0 0 0 0 0 0 0 1 | ||
+ | 0 0 0 0 0 0 1 0 | ||
+ | 0 0 0 0 0 0 1 1 | ||
+ | 0 0 0 0 0 1 0 0 | ||
+ | 0 0 0 0 0 1 0 1 | ||
+ | 0 0 0 0 0 1 1 0 | ||
+ | 0 0 0 0 0 1 1 1 | ||
+ | 0 0 0 0 1 0 0 0 | ||
+ | . . . | ||
+ | 1 1 1 1 1 0 0 1 | ||
+ | 1 1 1 1 1 0 1 0 | ||
+ | 1 1 1 1 1 0 1 1 | ||
+ | 1 1 1 1 1 1 0 0 | ||
+ | 1 1 1 1 1 1 0 1 | ||
+ | 1 1 1 1 1 1 1 0 | ||
+ | 1 1 1 1 1 1 1 1 < | ||
+ | 0 0 0 0 0 0 0 0 < | ||
+ | 0 0 0 0 0 0 0 1 | ||
+ | 0 0 0 0 0 0 1 0 | ||
+ | . . . | ||
+ | </ | ||
+ | |||
+ | =====GRABIT===== | ||
+ | To assist with consistency across all implementations, | ||
+ | |||
+ | < | ||
+ | lab46: | ||
+ | </ | ||
+ | |||
+ | =====Components and wiring===== | ||
+ | |||
+ | An example of one way to wire up the LED bar: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | =====EDIT===== | ||
+ | You will want to go [[/ | ||
+ | |||
+ | * [[/ | ||
+ | |||
+ | {{page> | ||
+ | |||
+ | |||
+ | =====STRATEGY===== | ||
+ | The general flow of the process (one way of going about it, anyway) can be described as follows: | ||
+ | |||
+ | < | ||
+ | SET COUNTER TO ZERO | ||
+ | REPEAT INFINITELY: | ||
+ | SET PLACE TO ONE | ||
+ | REPEAT UNTIL PLACE IS GREATER THAN EIGHT: | ||
+ | SHOULD THE PLACE POSITION HAVE A ONE: | ||
+ | ACTIVATE THE PLACE’S LED | ||
+ | OTHERWISE: | ||
+ | DEACTIVATE THE PLACE’S LED | ||
+ | |||
+ | LET PLACE BECOME THE NEXT PLACE POSITION | ||
+ | KEEP GOING | ||
+ | |||
+ | PAUSE FOR HUMAN PERCEPTION | ||
+ | LET THE COUNTER BE INCREMENTED BY ONE | ||
+ | KEEP GOING | ||
+ | </ | ||
+ | |||
+ | =====SUBMISSION===== | ||
+ | To be successful in this project, the following criteria (or their equivalent) must be met: | ||
+ | |||
+ | * Project must be submit on time, by the deadline. | ||
+ | * Late submissions will lose 33% credit per day, with the submission window closing on the 3rd day following the deadline. | ||
+ | * All code must compile cleanly (no warnings or errors) | ||
+ | * Compile with the **-Wall** and **--std=gnu18** compiler flags | ||
+ | * all requested functionality | ||
+ | * Executed programs must display in a manner similar to provided output | ||
+ | * output | ||
+ | * Processing must be correct based on input given and output requested | ||
+ | * Output, if applicable, must be correct based on values input | ||
+ | * Code must be nicely and consistently indented | ||
+ | * Code must be consistently written, to strive for readability from having a consistent style throughout | ||
+ | * Code must be commented | ||
+ | * Any "to be implemented" | ||
+ | * these " | ||
+ | * Sufficient | ||
+ | * No global variables (without instructor approval), no goto statements, no calling of main()! | ||
+ | * Track/ | ||
+ | * Submit | ||
+ | |||
+ | ====Submit Tool Usage==== | ||
+ | Let' | ||
+ | submit, you would do the following | ||
+ | uom0.c): | ||
+ | |||
+ | < | ||
+ | lab46: | ||
+ | </ | ||
+ | |||
+ | You should get some sort of confirmation indicating successful submission | ||
+ | if all went according to plan. If not, check for typos and or locational | ||
+ | mismatches. | ||
+ | |||
+ | =====RUBRIC===== | ||
+ | I'll be evaluating the project based on the following criteria: | ||
+ | |||
+ | < | ||
+ | 91: | ||
+ | *:stl2:used grabit to obtain project by the Sunday prior to duedate [13/13] | ||
+ | *: | ||
+ | *: | ||
+ | *:stl2:uses at least eight LEDs for the binary counter [13/13] | ||
+ | *: | ||
+ | *:stl2:code tracked in lab46 semester repo [13/13] | ||
+ | </ | ||
+ | |||
+ | ===Pertaining to the collaborative authoring of project documentation=== | ||
+ | |||
+ | * each class member is to participate in the contribution of relevant information and formatting of the documentation | ||
+ | * minimal member contributions consist of: | ||
+ | * near the class average edits (a value of at least four productive edits) | ||
+ | * near the average class content change average (a value of at least 256 bytes (absolute value of data content change)) | ||
+ | * near the class content contribution average (a value of at least 1kiB) | ||
+ | * no adding in one commit then later removing in its entirety for the sake of satisfying edit requirements | ||
+ | * adding and formatting data in an organized fashion, aiming to create an informative and readable document that anyone in the class can reference | ||
+ | * content contributions will be factored into a documentation coefficient, | ||
+ | * no contributions, | ||
+ | * less than minimum contributions is 0.75 | ||
+ | * met minimum contribution threshold is 1.00 | ||
+ | |||
+ | ===Additionally=== | ||
+ | |||
+ | * Solutions not abiding | ||
+ | * Solutions | ||
+ | * Solutions not utilizing indentation to promote scope and clarity or otherwise maintaining consistency in code style and presentation will be subject to a 25% overall deduction | ||
+ | * Solutions not organized and easy to read (assume a terminal at least 90 characters wide, 40 characters tall) are subject to a 25% overall deduction |